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

时间:2015-11-04 10:39:33

标签: perl

Perl中以下语句的含义是什么:

num //= 0 

3 个答案:

答案 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

Perl 5.10之前

小心,没有像$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