在我声明perl中的哈希之后
%hash1=(a=>"turkey",
b=>"india",
c=>"england",
d=>"usa")
Run Code Online (Sandbox Code Playgroud)
如果我为已存在的密钥分配一个新值,如
$hash1{d}="australia";
Run Code Online (Sandbox Code Playgroud)
我正在用关键'd'即"美国"失去以前的价值,因为当我这样做时
print %hash1;
Run Code Online (Sandbox Code Playgroud)
我没有看到值"美国"...如何保留同一个键的值?
Eri*_*rom 12
哈希键只能包含单个标量值,因此如果该值是一个字符串,则每个键都会遇到一个项目.但是,没有什么可以阻止您存储数组引用(也是标量)作为值.为了简化操作,您应该只存储数组引用或字符串,而不是混合使用两者:
my %hash1 = (a=>"turkey", b=>"india", c=>"england", d=>"usa");
# upgrade all values to arrays
# $hash1{$_} = [$hash1{$_}] for keys %hash1; # a way with `keys`
$_ = [$_] for values %hash1; # a better way with `values`, thanks to ysth
push @{ $hash1{d} }, 'australia';
print "$_ : @{ $hash1{$_} }\n" for keys %hash;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6240 次 |
| 最近记录: |