[英]Array in scalar context in Perl
在Perl中,如果要將數組分配給標量,則將獲得該數組的長度。
例:
my @arr = (1,2,3,4);
my $x = @arr;
現在,如果你檢查$x
的內容,你會發現$x
包含@arr
數組的長度。
我想知道Perl之所以這樣做的原因。 它背后的原因是什么? 我嘗試了我的水平,但找不到任何好的理由。 那么,有人能幫我理解正在發生的場景背后的原因嗎?
Perl使用上下文,其他語言使用函數來獲取某些信息或在不同類型之間轉換值。 在perldata手冊頁( man perldata
)中詳細解釋了上下文的概念。
在Perl中,相同的數據在不同的上下文中看起來不同。 數組看起來像列表上下文中的元素列表,而它看起來像標量上下文中的元素數。
在標量語境中它怎么可能看起來?
my ($x) = @arr;
或者my $x = shift @arr;
或者my $x = $arr[0];
。 my ($x) = reverse @arr;
或者my $x = pop @arr;
或者my $x = $arr[-1];
。 我想不出任何其他合理的方法來從數組中生成標量。 顯然使用數組長度作為其標量值比這兩個更好,因為它是數組的某種全局屬性,而這兩個是相當本地的。 當您在標量上下文中查看數組的典型用法時,它也是非常合乎邏輯的:
die "Not enough arguments" if @ARGV < 5;
您可以閱讀<
非常自然,因為“小於”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.