[英]Why does @my_array = undef have an element?
@my_array = undef;
if (@my_array ) {
print 'TRUE';
} else {
print 'FALSE';
}
這將打印TRUE
為什么數組有一個元素?
該數組有一個元素,因為您分配了一個元素。 考慮以下:
@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
請參閱什么是真理? 有關 Perl 中 boolean 值的更多信息。(如果您來自其他語言,您可能會遇到其他一些驚喜,因此值得一讀。)
這是文章中的一個關鍵點:
defined
和undef
適用於測試和設置標量。 不過,不要嘗試使用 arrays。 目前,如果 Perl 為數組分配了存儲空間,則defined(@array)
返回 true,這對普通程序員來說很奇怪且沒有用。 要將數組返回到其初始值 state,我們說:@array = (); # good
說
@array = undef
就是讓@array
包含一個單元素列表,其中單個元素是標量值undef
。 這幾乎不是我們想要的。
另一個提示:使用my
本地化變量:my @array = ( #whatever );
在 Perl 中, undef
是一個有效值。 您可以將一個(或任意多個) undef
放入一個數組或列表中。
如果要刪除數組的所有元素,請執行以下操作:
@my_array = ();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.