从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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |