我对以下内容感到困惑。
有时候我会看到这样的例子:
my %hash = get_data();
sub get_data {
my %data = ();
# do processing
return %data;
}
而数组也是类似的。
my @arrays = get_data();
sub get_data {
my @data = ();
# do processing
return @data;
}
我最初认为函数只能返回对数组或哈希的引用,而不能返回它们本身。
所以我不明白两者之间的区别以及我们应该何时选择其中一个?
这是否与垃圾回收或数据复制过多有关呢?
return @data
,则返回@data
元素的列表,如果使用return %data
,则返回%data
键/值元素的列表,如果使用\%data
,则返回一个元素(哈希引用)的列表。您可以将这样的列表输入到哈希表中,就像您所做的那样,也可以输入到数组等其他数据结构中。 - mpapec