我知道我可以按照以下方式创建一个数组和一个数组引用:
my @arr = ();
my $rarr = \@arr;
然后我可以按以下方式遍历数组引用:
foreach my $i (@{$rarr}){
}
有没有一种方法可以将数组引用复制或转换为普通数组,以便我可以从函数中返回它?(最好不使用那个foreach循环和push)。
我知道我可以按照以下方式创建一个数组和一个数组引用:
my @arr = ();
my $rarr = \@arr;
然后我可以按以下方式遍历数组引用:
foreach my $i (@{$rarr}){
}
有没有一种方法可以将数组引用复制或转换为普通数组,以便我可以从函数中返回它?(最好不使用那个foreach循环和push)。
你在问题中已经有了答案 :-)
use warnings;
use strict;
sub foo() {
my @arr = ();
push @arr, "hello", ", ", "world", "\n";
my $arf = \@arr;
return @{$arf}; # <- here
}
my @bar = foo();
map { print; } (@bar);
return @arr;
吗? - Sergei Krivonos像这样:
return @{$reference};
你只是返回了一个解引用后的引用。
你可以通过将数组赋值给一个新数组来简单地复制数组:
my @copy_of_array = @$array_ref;
但是,你不需要这样做就可以返回修改后的数组。由于它是对数组的引用,通过引用更新数组就是你所需要做的!