我碰到這段代碼(修改節選)來的?爲什麼不簡單地做的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