声明后分配哈希值

时间:2013-12-07 19:19:22

标签: ruby

让我说我声明了像

这样的哈希
foo = { }

在正常情况下,如果我需要在哈希中添加新项目,我只需要

foo[:baz] = "mike"
foo[:quz] = "jake"

我想知道是否可以使用块来执行上述操作以避免重复代码。

修改

分配超过2,比方说30 +

2 个答案:

答案 0 :(得分:3)

您可以使用Hash#merge!一次设置多个值:

foo = {}

# later ...

foo.merge!({
  :baz => "mike",
  :quz => "jake"
})

答案 1 :(得分:0)

要向哈希添加新项目(或者确切地说,将值指定为特定哈希键),请使用以下语法

hash[key] = value

没有更简洁的方法可以做到这一点,在这种情况下使用块没有任何优势。

如果您有多个值,则可以使用合并

foo.merge({
  baz: "mike",
  quz: "jake",
})

foo.merge(baz: "mike", quz: "jake")

您还可以从不同的数据集中组合哈希,例如

values = [:baz, "mike", :quz, "jake"]
foo.merge(Hash[values])

但最好的解决方案可能取决于你如何获得要添加到哈希值的值。