我在Ruby中有哈希哈希值,我正在插入新的哈希值或向现有哈希值添加值。 我一直觉得Ruby有更好的方法来做到这一点:
map # => { 1 => {:type => "humbug", :name => "grinch" }, 2 => {:type => 2 } }
if map[key]
map[key].store(:name, value)
else
map[key] = { name: value }
end
我希望能够做一些像
这样的事情map[key].store(:name, value) || map[key] = {name: value}
但当然如果value
处没有map[key]
则会失败
......建议?
答案 0 :(得分:5)
有不那么尴尬的方式吗?
是
map[key] ||= {}
map[key].store(:name, value) # or map[key][:name] = value
或者使用一个Hash缺失值处理程序。
map = Hash.new { |hash, key| hash[key] = {} }
# then set fearlessly, missing hashes will be auto-created.
map[key][:name] = value