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"
})