下面是我想在某种循环中构建数组哈希时必须编写的代码块的概括。
#get value and key that I want to use
my $value = getvalue();
my $key = getKey();
#add value to hash using key
if($hash_of_arrays{$key}){
push(@{$hash_of_arrays{$key}}, $value);
}
else{
$hash_of_arrays{$key} = [$value];
}
为这样一个简单的任务编写if语句非常繁琐,但需要完成它,因为在哈希中未定义其键时推送一个值会导致问题。我只是想知道是否有任何简写来写这个 - 我不必写三次$hash_of_arrays{$key}
。
答案 0 :(得分:14)
push @{ $HoA{$key} }, $value;
效果非常好,是推荐的事情。如果您使用它的代码有“问题”,那么请询问这些问题。
答案 1 :(得分:0)
直观地说,当你发现自己重复代码时,为你做一个函数或一个对象。
但是,对于这种特定情况,您可能需要查看Perl Recipe 13.15: Tie Example: Make a Hash That Always Appends。您只需为哈希值分配一个值,它就会自动将其附加到底层数组。