这是一段常见的示例代码:
while (1) {
print "foo\n";
}
永远打印“foo”。
perl foo.pl
foo
foo
foo
...
和
while (0) { print "foo\n"; }
如你所料,悄然死去:
perl test.pl
有人能解释一下为什么这是一个有用的 while 实现吗?这至少适用于 5.10、Unix 和 MacOS X:
while (-1) { print "foo\n"; }
这给
foo
foo
foo
...
最佳答案
如果有的话,可以说 -1
比 1
更有可能为真自 -1
( 111..111b
) 是零 ( 000..000b
) 的按位求反。 BASIC 和 GW-BASIC 在需要返回真值时使用 -1。
无论如何,Perl 认为表示“空”或“无”的值是错误的。大多数语言都持有类似的观点。具体来说,整数零、浮点零、字符串零、空字符串和 undef 都是假的。
这是 documented ,尽管文档措辞不佳。 (它列出了 ()
作为一个错误的值,但没有这样的值。)
除了一致性之外,采用这种方法非常有用。例如,它允许一个人使用
if (@x)
而不是
if (@x != 0)
关于perl - 为什么 Perl 认为 -1 是真的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638195/