gpt4 book ai didi

perl - 从 Perl 子例程返回整个数组效率低下吗?

转载 作者:行者123 更新时间:2023-12-03 21:05:28 24 4
gpt4 key购买 nike

我经常在 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()};

根据德曼的评论编辑:

也可以在函数中使用普通数组并返回对它的引用。
sub getInfo {
my @array;
push @array, 'foo';
# ...
return \@array;
}

关于perl - 从 Perl 子例程返回整个数组效率低下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com