2013-05-09 35 views
0

我碰到這段代碼(修改節選)來的?爲什麼不簡單地做的Perl Autovivication使用情況

my $respMap; 
my @respIdArray; 
foreach my $respId (@$someList) { 
     push(@respIdArray, $respId); 
} 
$respMap->{'ids'} = \@respIdArray; 
return $respMap; 

後續行動:有人可以給我一個很好的autovivication用例嗎?

+0

當'@ $ someList'爲空時,您的重寫會引入細微差別。另外,我很好奇你爲什麼只重寫了隱式arrayref分配,而不是隱式hashref分配。 – pilcrow 2013-05-09 17:56:42

回答

1

無論哪種方式是正確的;第一個使用數組參考$respIdArray和第二個普通數組@respIdArray。在構建複雜的數據結構時(檢查perldoc perlreftut),您將需要數組引用,但除此之外,取決於您選擇哪一個。

請注意,在這兩種情況下,您都將數組引用分配到$respMap->{'ids'},所以示例實際上非常相似。

順便說一句,autovivification是另一回事,它與動態創建數據結構有關。

1

當處理深層結構時,Autovivication更有用。

push(@{$hash{'key'}{$subkey}}, 'value');