加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:15:05 所属栏目:大数据 来源:网络整理
导读:我经常在Perl中有一个子例程,用一些信息填充数组.既然我也习惯在C中进行黑客攻击,我发现自己经常在Perl中这样做,使用引用: my @array;getInfo(@array);sub getInfo { my ($arrayRef) = @_; push @$arrayRef,"obama"; # ...} 而不是更简单的版本: my @arra
我经常在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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读