我正在向哈希键添加项目。我期望得到这样的结构:
{
'a' : [1],
'b' : [2, 3, 4]
}
我使用数组来初始化哈希。
irb> hash = Hash.new([])
=> {}
然后开始使用它:
irb> hash['a'] << 1
=> [1]
irb> hash['b'] << 2
=> [1, 2]
但事实证明:
irb> hash
=> {}
请尝试以下方法:
hash = Hash.new{|h, k| h[k] = []}
hash['a'] << 1 # => [1]
hash['b'] << 2 # => [2]
得到意外结果的原因是您指定了一个空数组作为默认值,但使用了相同的数组;没有复制完成。正确的方法是使用新的空数组初始化该值,如我的代码中所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)