@my_array = undef;
if (@my_array ) {
print 'TRUE';
} else {
print 'FALSE';
}
这将打印TRUE
为什么数组有元素?
答案 0 :(得分:25)
数组有一个元素,因为你分配了一个元素。请考虑以下事项:
@array = undef; # Assigns the value 'undef' to @array
@array = (); # Assigns the empty list to @array
undef @array; # Undefines @array
它们看起来很相似,但第一行与其他两行不同(相同)。第一行产生具有单个元素的数组(值undef
)。另外两个导致一个空数组。在Perl中,undef
既是值又是运算符。第一行将其用作值,最后一行将其用作运算符。
通常不需要清除阵列。声明时它们是空的:
my @array; # There's nothing in here, yet
答案 1 :(得分:11)
有关Perl中布尔值的更多信息,请参阅What is Truth?。 (如果你来自另一种语言,你可能会遇到其他一些惊喜,所以值得一读。)
以下是文章的重点:
defined
和undef
是有益的 测试和设置标量。别试试 但是,他们使用数组。目前, 如果Perl,defined(@array)
返回true 已为阵列分配存储空间 一些奇怪而无用的东西 对普通程序员来说。回来 一个数组到它的初始状态,我们说:@array = (); # good
说
@array = undef
是@array
包含一个单元素列表 单个元素是标量值undef
。这几乎不是我们所做的 想。
另一个提示:使用my
本地化您的变量:my @array =(#whatever);
答案 2 :(得分:8)
在Perl中,undef
是有效值。您可以将一个(或任意数量)的undef
放入数组或列表中。
如果要删除数组的所有元素,请执行以下操作:
@my_array = ();