Kar*_*lek 4 perl data-structures
我无法确定哪种方法更多(1)惯用Perl,(2)有效,或(3)"清除".
让我用代码解释一下.首先,我能做到
sub something {
...
$ref->{size} = 10;
$ref->{name} = "Foo";
$ref->{volume} = 100;
push (@references, $ref);
...
return @references;
}
Run Code Online (Sandbox Code Playgroud)
或者,我能做到
sub something {
...
push (@names, "Foo");
$sizes{Foo} = 10;
$volumes{Foo} = 100;
...
return (\@names, \%sizes, \%volumes);
}
Run Code Online (Sandbox Code Playgroud)
两者基本上都是一样的.重要的是,我需要数组,因为我需要保持秩序.
我知道,总有不止一种方法可以做某事,但是,你更喜欢这两种中的哪一种?
Sin*_*nür 10
而不是用毫无意义的术语来思考,而是something用具体的方式思考和表达这个问题.在这种情况下,你似乎是返回拥有对象的列表name,size和volume属性.当你这样想时,没有理由考虑第二种方法.
如果遇到问题,你可以考虑稍后进行优化,但即使你这样做,你可能会从Memoize获得更多,而不是通过爆炸数据结构.
我建议的一个效率改进是从这个子程序返回一个引用:
sub get_objects {
my @ret;
while ( 'some condition' ) {
# should I return this one?
push @ret, {
name => 'Foo',
size => 10,
volume => 100,
};
}
return \@ret;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |