Perl具有用于在给定上下文中一般访问变量的系统变量,例如,$1在正则表达式之后使用to来访问第一个分组项或$_在循环中访问当前值.
我很好奇是否存在来自子程序的返回值的类似系统变量.
恩.
my $var = (format($num)) ? $_ : 'N/A';
Run Code Online (Sandbox Code Playgroud)
如果定义$_了结果,format($num)那么系统变量将在哪里访问结果.
不,那里没有.
但是,您可以重写示例以使用or ||或defined-or //运算符.
my $foo = frobnicate() || 'N/A'; # only true values, so no 0, q{} or undef
my $bar = frobnicate() // 'N/A'; # no undef
Run Code Online (Sandbox Code Playgroud)
当然,这不会保持价值一段时间在代码中进一步使用它.
这也只有在sub的返回值只有一个值时才有效.如果返回了一个列表,它将使用列表中最右侧的值.
sub frobnicate { qw/a b 0/ }
my $var = frobnicate() || 'N/A';
say $var;
Run Code Online (Sandbox Code Playgroud)
以上将打印N/A.
sub frobnicate { qw/a b c/ }
my $var = frobnicate() || 'N/A';
say $var;
Run Code Online (Sandbox Code Playgroud)
虽然这会打印出来c.
为了拥有短代码,不要试图做空.大多数情况下,您想要的是易于阅读的代码.
请注意,这format是一个关键字.不要将它用作子例程标识符.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |