{size} = 10-6ren">
gpt4 book ai didi

perl - Perl : an array of hash references or list of "flat" hashes? 中什么更好

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

我无法决定哪种方法更 (1) 惯用 Perl,(2) 高效,或 (3)“清晰”。

让我用代码来解释。首先,我可以

sub something {
...
$ref->{size} = 10;
$ref->{name} = "Foo";
$ref->{volume} = 100;
push (@references, $ref);
...
return @references;
}

或者,我可以
sub something {
...
push (@names, "Foo");
$sizes{Foo} = 10;
$volumes{Foo} = 100;
...
return (\@names, \%sizes, \%volumes);
}

两者本质上做同样的事情。重要的是,我需要数组,因为我需要保持顺序。

我知道,做某事的方法总是不止一种,但是,您更喜欢这两种方法中的哪一种?

最佳答案

而不是用无意义的术语思考,例如 something ,用具体的术语思考和表述问题。在这种情况下,您似乎正在返回具有 name 的对象列表。 , sizevolume属性。当你这样想时,甚至没有理由考虑第二种方法。

如果遇到问题,您可以稍后再考虑优化,但即使您这样做,您也可能会从 Memoize 中获得更多 yield 。而不是通过爆炸数据结构。

我建议的一种效率改进是从这个子程序返回一个引用:

sub get_objects {
my @ret;

while ( 'some condition' ) {
# should I return this one?
push @ret, {
name => 'Foo',
size => 10,
volume => 100,
};
}

return \@ret;
}

关于perl - Perl : an array of hash references or list of "flat" hashes? 中什么更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179720/

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