@my_array = undef;
if (@my_array ) {
print 'TRUE';
} else {
print 'FALSE';
}
Run Code Online (Sandbox Code Playgroud)
这将打印 TRUE
为什么数组有元素?
Mic*_*man 25
该数组有一个元素,因为您分配了一个元素.考虑以下:
@array = undef; # Assigns the value 'undef' to @array
@array = (); # Assigns the empty list to @array
undef @array; # Undefines @array
Run Code Online (Sandbox Code Playgroud)
它们看起来很相似,但第一行与其他两行不同(相当于).第一行导致数组具有单个元素(值undef
).另外两个导致一个空数组.在Perl中,undef
既是值又是运算符.第一行将其用作值,最后一行将其用作运算符.
通常不需要清除阵列.声明时它们是空的:
my @array; # There's nothing in here, yet
Run Code Online (Sandbox Code Playgroud)
Tel*_*hus 11
看什么是真相?有关Perl中布尔值的更多信息.(如果你来自另一种语言,你可能会遇到其他一些惊喜,所以值得一读.)
这是文章中的一个关键点:
defined
并且undef
适用于测试和设置标量.但是,不要尝试使用数组.目前,defined(@array)
如果Perl为数组分配了一些奇怪的东西并且对普通程序员没用,则 返回true.要将数组返回到其初始状态,我们说:Run Code Online (Sandbox Code Playgroud)@array = (); # good
要说
@array = undef
是@array
包含一个单元素列表,单个元素是标量值undef
.这几乎不是我们想要的.
另一个提示:使用以下方法本地化您的变量my
:my @array =(#whatever);
在Perl中,undef
是一个有效值.您可以将一个(或任意数量)的undef
s放入数组或列表中.
如果要删除数组的所有元素,请执行以下操作:
@my_array = ();
Run Code Online (Sandbox Code Playgroud)