my $pass = !$message;
我遇到了这个 perl 代码,其中 $message 是一个字符串,而 $pass 应该是一个布尔值。将被检查为
ok ($pass, $test)
我很困惑 $message 的非(!)是什么?
这如何转换为布尔值?
空字符串为假,非空字符串为真?
my $pass = !$message;
我遇到了这个 perl 代码,其中 $message 是一个字符串,而 $pass 应该是一个布尔值。将被检查为
ok ($pass, $test)
我很困惑 $message 的非(!)是什么?
这如何转换为布尔值?
空字符串为假,非空字符串为真?
是!
一元逻辑否定运算符。假字符串是""
and "0"
。如果这样的字符串在逻辑上被否定,则计算结果为1
。所有其他字符串都是真实的。这些的否定是""
(空字符串)或数字0
。
其他假值是undef
和数字0
。
因此,ok ($pass, $test)
如果$message
未定义、空字符串或零,则将通过。
这是完全正确的。在 perl 中,以下项目为“假”:
0
''
'0'
undef
其他任何事情都是真的。因此,如果$message
不是空、未定义或'0'
,$message
则为真,!$message
为假。