如果我對陣列或標量求反會發生什么?使用下面的腳本我得到了這些結果:
$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?)
uj5u.com熱心網友回復:
的!(不)操作員將其引數在標量背景關系。標量背景關系中的陣列回傳其大小——它包含多少個元素。所以在你的情況下,當你做
!@x
你基本上是在做:
!2
正如您所提到的,哪個是空字串,而不是0.
它不是不可見的,但是您用來顯示它的方法沒有顯示它。例如,您可以使用Data::Dumper模塊列印它:
use Data::Dumper;
print Dumper !@a;
會列印
$VAR1 = '';
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379641.html
