我碰到这段代码(修改节选)来的?为什么不简单地做的Perl Autovivication使用情况
my $respMap;
my @respIdArray;
foreach my $respId (@$someList) {
push(@respIdArray, $respId);
}
$respMap->{'ids'} = \@respIdArray;
return $respMap;
后续行动:有人可以给我一个很好的autovivication用例吗?
我碰到这段代码(修改节选)来的?为什么不简单地做的Perl Autovivication使用情况
my $respMap;
my @respIdArray;
foreach my $respId (@$someList) {
push(@respIdArray, $respId);
}
$respMap->{'ids'} = \@respIdArray;
return $respMap;
后续行动:有人可以给我一个很好的autovivication用例吗?
无论哪种方式是正确的;第一个使用数组参考$respIdArray
和第二个普通数组@respIdArray
。在构建复杂的数据结构时(检查perldoc perlreftut
),您将需要数组引用,但除此之外,取决于您选择哪一个。
请注意,在这两种情况下,您都将数组引用分配到$respMap->{'ids'}
,所以示例实际上非常相似。
顺便说一句,autovivification是另一回事,它与动态创建数据结构有关。
当处理深层结构时,Autovivication更有用。
push(@{$hash{'key'}{$subkey}}, 'value');
当'@ $ someList'为空时,您的重写会引入细微差别。另外,我很好奇你为什么只重写了隐式arrayref分配,而不是隐式hashref分配。 – pilcrow 2013-05-09 17:56:42