gpt4 book ai didi

perl - 用数组引用替换标量哈希值的更简洁的存储方式?

转载 作者:行者123 更新时间:2023-12-05 00:41:56 24 4
gpt4 key购买 nike

我正在构建一个散列,其中与标量关联的键不一定是唯一的。期望的行为是,如果键是唯一的,则值是标量。如果键不是唯一的,我希望该值是与键关联的标量的数组引用。由于哈希是迭代构建的,因此我不知道 key 是否提前唯一。现在,我正在做这样的事情:

if(!defined($hash{$key})){
$hash{$key} = $val;
}
elseif(ref($hash{$key}) ne 'ARRAY'){
my @a;
push(@a, $hash{$key});
push(@, $val);
$hash{$key} = \@a;
}
else{
push(@{$hash{$key}}, $val);
}

有没有更简单的方法来做到这一点?

最佳答案

rjh 是对的。

我写了太多的代码来完成你所描述的——哈希值是一个数组引用,除非它不是。令和条件类型检查令。然后有一天我突然想到,“我为什么要写这么多废话?到处都使用数组引用,傻瓜”我对自己说。从那天起,每当我在公园散步时,蓝鸟都会从树上飞下来给我唱歌。

push @{$hash{$key}}, $val;

这就是你所要做的。如果键不存在,则数组自动激活。

如果你不喜欢 autoviv,并且想要明确地做:
$hash{$key} = [] unless exists $hash{$key};
push @{$hash{$key}}, $val;

即使这种“详细”的方法也要短得多。

关于perl - 用数组引用替换标量哈希值的更简洁的存储方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com