我是Perl的新手并且在工作中遇到了这段代码,我搜索了一段时间但没有找到答案.任何人都可以用简单的英语解释它的功能吗?谢谢.
my $abc = delete $args{ 'abc' } // croak 'some information!';
Run Code Online (Sandbox Code Playgroud)
Ant*_*onH 33
从这里的页面:http://perldoc.perl.org/perlop.html#Logical-Defined-Or
虽然它在C语言中没有直接的等价物,但Perl的
//运算符与它的C风格有关or.事实上,||除了它测试左手边的定义而不是真实之外,它完全相同.因此,EXPR1 // EXPR2返回EXPR1if定义的值,否则EXPR2返回值.(EXPR1在标量上下文中,EXPR2在其//自身的上下文中进行评估).通常,这与结果相同defined(EXPR1) ? EXPR1 : EXPR2(除了三元运算符形式可以用作左值,而EXPR1 // EXPR2不能).这对于为变量提供默认值非常有用.如果您确实想要测试是否至少有一个$a和$b已定义,请使用defined($a // $b).
在perlop中检查Logical Defined-Or,它类似||但它检查undef值(不是假值).
虽然它在C语言中没有直接的等价物,但Perl的//运算符与它的C风格有关.事实上,它与||完全相同,只是它测试左手边的定义而不是真实.
简而言之,
my $abc = delete $args{ 'abc' } // croak 'some information!';
Run Code Online (Sandbox Code Playgroud)
当$args{ 'abc' }返回undef值时会呱呱叫.
| 归档时间: |
|
| 查看次数: |
11999 次 |
| 最近记录: |