簡體   English   中英

Perl中標量上下文中的數組

[英]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.

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