嘿。在Python我可以這樣做:如何返回一個列表作爲Perl中的數組引用?
def fnuh():
a = "foo"
b = "bar"
return a,b
我能在Perl中同樣優雅的方式返回一個列表,尤其是在子程序的返回類型應該是一個數組的引用?
我知道我可以做
sub fnuh {
my $a = "foo";
my $b = "bar";
my $return = [];
push (@{$return}, $a);
push (@{$return}, $b);
return $return;
}
但我敢打賭,有一個更好的辦法做到這一點在Perl。你知道嗎?
要小心列表和數組之間的區別。這是一個導致很多混亂的領域。理解這種區分對於理解環境如何工作很重要。請參閱http://perldoc.perl.org/perlfaq4.html#What-is-the-difference-between-a-list-and-an-array%3f和http://www.perlmonks.org/?node_id= 130861和http://www.perlmonks.org/?node_id=719099進行一些討論。 – daotoad 2010-01-14 16:43:13
謝謝,我認爲這必須涉及列表,但實際上我最喜歡的解決方案 - 返回[$ a,$ b] - 不涉及一個。如果你知道更好的方式來陳述問題的意圖,請告訴我。 – 0x89 2010-01-14 17:02:39
你的問題沒有問題。在大多數語言中,列表和數組之間沒有真正的區別。 Perl是有區別的。列表是一組有序的值。一個數組是一個變量數據類型,它包含一系列索引可訪問的有序值。你的首選答案是*正是*你所要求的。我只是想強調數組和列表之間的區別。這是一個微妙的事情,但真正理解它的確有助於理解Perl中的上下文是如何工作的。 – daotoad 2010-01-14 17:22:09