【发布时间】:2022-01-14 17:48:50
【问题描述】:
如果我对数组或标量进行求反会发生什么?使用下面的脚本我得到了这些结果:
$x = 0
-------------
$x: 0
!$x: 1
$x = 1
-------------
$x: 1
!$x:
@x = ()
-------------
@x:
!@x: 1
@x = qw ( a b )
-------------
@x: ab
!@x:
我想如果我对非空数组或标量进行否定,我将得到'',这意味着在布尔上下文中false。这是正确的吗?
有没有办法让它“可见”?
我想知道为什么$x=1; 为!$x 提供'' 而不是0,因为$x=0 为1 提供!$x。
这里我假设每种 TRUE 对象如果被否定,都会给出 '',如果被否定,每种 FALSE 对象都会给出 1。
写完这一切后,我意识到 Perl 是非常一致的。尽管如此,“标准”FALSE 是 ''(不可见)让我感到不舒服。
代码:
my $x = 0;
print "\$x = 0\n-------------\n";
print "\$x: ",$x,"\n"; # 0
print "!\$x: ",!$x,"\n\n"; # 1
print "\n";
$x = 1;
print "\$x = 1\n-------------\n";
print "\$x: ",$x,"\n"; # 1
print "!\$x: ",!$x,"\n\n"; # (empty?)
my @x = ();
print "\@x = ()\n-------------\n";
print "\@x: ",@x,"\n"; # a b
print "!\@x: ",!@x,"\n\n"; #
@x = qw ( a b );
print "\@x = qw ( a b )\n-------------\n";
print "\@x: ",@x,"\n"; # 1
print "!\@x: ",!@x,"\n"; # (empty?)
【问题讨论】: