簡體   English   中英

在perl中將數組分配給標量時,行為如何?

[英]How the behavior is when assign an array to a scalar in perl?

我的代碼是

my $r = ['111','222','aaa','bbb'];
print $r;
my $s = ('111','222','aaa','bbb');
print $s;

我能理解的第一張紙,$ r將是一個參考,並且印刷給我類似“ ARRAY(0x44444444)”的字樣。

但是我不明白為什么第二個示例print $ s給我最后一個元素bbb,為什么?

逗號操作符的功能,取決於上下文。 有列表上下文和標量上下文要考慮。

在列表上下文中,逗號運算符將列表中的項目分開。 如果左側是數組或用括號括起來,則賦值會在右側強加列表上下文:

my ($s) = (1, 2, 3);  #=> $s = 1, rest discarded
(my $s) = (1, 2, 3);  # the same
my @arr = (1, 2, 3);  #=> @arr = (1, 2, 3)

在標量環境中,Perl希望我們提供一個單一的價值。 然后,逗號運算符的工作方式就像在C或其他語言中一樣:對所有表達式求值並丟棄它們的值。 僅保留最后一個值:

my $s = (1, 2, 3);  #=> $s = 3, previous items discarded

另請參見: perldoc perlop逗號運算符

請注意,括號(...)不會創建數組。 它們僅用於控制優先級。 $s = (1, 2, 3)中需要數組,因為$s = 1, 2, 3將被解析為($s = 1), 2, 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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