从Perl子程序返回整个数组,效率低下?

前端之家收集整理的这篇文章主要介绍了从Perl子程序返回整个数组,效率低下?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我经常在Perl中有一个子例程,用一些信息填充数组.既然我也习惯在C中进行黑客攻击,我发现自己经常在Perl中这样做,使用引用:
my @array;
getInfo(\@array);

sub getInfo {
   my ($arrayRef) = @_;
   push @$arrayRef,"obama";
   # ...
}

而不是更简单的版本:

my @array = getInfo();

sub getInfo {
   my @array;
   push @array,"obama";
   # ...
   return @array;
}

原因当然是我不希望在子例程中本地创建数组,然后在返回时复制.

是对的吗?或者Perl是否优化了?

解决方法

首先返回数组引用怎么办?
sub getInfo {
  my $array_ref = [];
  push @$array_ref,'foo';
  # ...
  return $array_ref;
}

my $a_ref = getInfo();
# or if you want the array expanded
my @array = @{getInfo()};

根据dehmann的评论编辑:

也可以在函数中使用一个正常的数组,并返回一个引用.

sub getInfo {
  my @array;
  push @array,'foo';
  # ...
  return \@array;
}
原文链接:https://www.f2er.com/Perl/172804.html

猜你在找的Perl相关文章