Perl中以下语句的含义是什么:
num //= 0
答案 0 :(得分:5)
perldoc perlop列出了Perl运算符。
逻辑定义 - 或
虽然它在C中没有直接的等价物,但Perl的//运算符是 与其C风格“或”相关。事实上,它与||完全相同, 除了它测试左手边的定义而不是它 真相。
//=
只是它的赋值版本。
赋值运算符的工作方式与C相同。即
$x += 2;
相当于
$x = $x + 2;
所以它会0
分配给num
,除非已定义num
。
这与||
不同,因为定义的值不是真的(例如0
或空字符串)。
答案 1 :(得分:2)
$num = $num // 0;
现在是
的便捷方式 $num =
defined
$num ? $num : 0;
//
被称为已定义或操作符 instead of testing for truth, tests for defined-ness。
除非变量是undef
或数组为空 ()
(实际上是evaluates to an undefined value in scalar context) - 它是定义的。
所以my( $a, $b, $c ) = ( '', '0', 0 )
都是定义的,但 false 。
小心,没有像$pi //= PI
这样的assignment。
答案 2 :(得分:0)
num // = 0 ,相当于
num = num // 0;
这意味着它检查是否定义了左操作数,如果定义则返回左操作数,否则返回右操作数。
my $num;
$num //= 0;
print $num; # optputs 0
$num = 9;
$num //= 0;
print $num; # outputs 9