以下Perl语句的含义是什么:num//=0



以下语句在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

最新更新