簡體   English   中英

為什么 @my_array = undef 有一個元素?

[英]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 值的更多信息。(如果您來自其他語言,您可能會遇到其他一些驚喜,因此值得一讀。)

這是文章中的一個關鍵點:

definedundef適用於測試和設置標量。 不過,不要嘗試使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM