以下语句在Perl中的含义是什么:
num //= 0
perldoc perlop列出了Perl运算符。
逻辑定义或
尽管它在C语言中没有直接的等价物,但Perl的//运算符是与C样式"或"相关。事实上,它和||完全一样,只是它测试左手侧的定义,而不是真相
//=
只是它的赋值版本
赋值运算符的工作原理与C相同。也就是说,
$x += 2;
相当于
$x = $x + 2;
因此,它将0
分配给num
,除非已经定义了num
。
这与||
不同,因为存在不为真的定义值(例如0
或空字符串)。
$num = $num // 0;
现在是的便捷方式
$num =
defined
$num ? $num : 0;
//
被称为定义或运算符,它不是测试真值,而是测试定义性。
除非变量是undef
或数组为空()
(在标量上下文中实际计算为未定义的值),否则它是定义的。
因此my( $a, $b, $c ) = ( '', '0', 0 )
都是定义的,但为false。
小心在Perl 5.10之前,没有像$pi //= PI
这样的赋值。
num//=0,相当于
num = num // 0;
这意味着它检查左操作数是否已定义,如果已定义,则返回左操作数,否则返回右操作数。
my $num;
$num //= 0;
print $num; # optputs 0
$num = 9;
$num //= 0;
print $num; # outputs 9