是否有一种不太笨拙的方法来存储Ruby哈希值?

时间:2017-10-17 13:58:07

标签: ruby-on-rails ruby hashmap

我在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]则会失败 ......建议?

1 个答案:

答案 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