所以这里是
$y = 0 | 2 | 4; # answer is 6
$x = 0 || 2 || 4; # answer is 2
我知道为什么
$y
是 6
因为它使用的是 OR
每个数字和 2 | 4 = 6
上的运算符但对于 $x
...为什么是这样
2
?
最佳答案
因为 2 是第一个非假项和逻辑 OR 短路。它计算 0 是假的,然后 2 不是假的,所以它完成并返回 2。考虑以下示例的输出:
$val = 1;
sub a_proc {
print "a_proc: ", $val++, "\n";
1;
}
$another_val = &a_proc || &a_proc;
这将输出
a_proc: 1
.尽快a_proc
返回一个真值,解释器可以停止评估,因为 true
的逻辑 OR任何值都是 true
.
关于perl - 在 Perl 中, ||运算符(operator)工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052247/