Ruby 声明后分配哈希值

Ruby 声明后分配哈希值,ruby,Ruby,假设我声明了一个类似 foo = { } 在正常情况下,如果我需要向散列中添加一个新项,我只需要这样做 foo[:baz] = "mike" foo[:quz] = "jake" 我想知道是否有可能使用一个块来避免重复的代码来执行上述操作 编辑 赋值大于2,比如说30+要将新项添加到散列(或者准确地说,将值指定为特定的散列键),请使用以下语法 hash[key] = value 没有比这更简洁的方法了,在这种情况下使用块也没有任何好处 如果有多个值,则可以使用“合并” foo.merge(

假设我声明了一个类似

foo = { }
在正常情况下,如果我需要向散列中添加一个新项,我只需要这样做

foo[:baz] = "mike"
foo[:quz] = "jake"
我想知道是否有可能使用一个块来避免重复的代码来执行上述操作

编辑
赋值大于2,比如说30+

要将新项添加到散列(或者准确地说,将值指定为特定的散列键),请使用以下语法

hash[key] = value
没有比这更简洁的方法了,在这种情况下使用块也没有任何好处

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

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

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

values = [:baz, "mike", :quz, "jake"]
foo.merge(Hash[values])
但最好的解决方案可能取决于如何获取要添加到哈希中的值。

您可以使用它一次设置多个值:

foo = {}

# later ...

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

我看不出布洛克对这种款式有什么好处。。可能您需要进一步清除自己。您的意思是如何一次设置多个值?可能不是一个块…感谢您的澄清!。也许
foo.merge!(baz:“mike”,quz:“jake”)
,因为它修改了原始对象。
foo = {}

# later ...

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