说我有一个类似的哈希:
myhash = {'key1': {'innerkey1': 'innervalue1', ...}, ...}
我想迭代这个哈希并将一个键值对添加到内部哈希中。以上示例变为:
myhash = {'key1': {'innerkey1': 'innervalue1', 'addedkey': 'addedvalue', ...}, ...}
我尝试使用myhash.each do |k, v|
,但更改块中的v
只会影响块范围内的哈希值。它通过在块内部执行myhash[k]['addedkey'] = 'addedvalue'
来工作,但我想修改内部哈希,而不是使用myhash
来执行此操作。
我如何在Ruby中执行此操作?
答案 0 :(得分:2)
使用Hash merge!
方法:
myhash = { k1: { innerk1: 'innerv1' }, k2: { innerk2: 'innerv2' } }
myhash.each do |key, value|
value.merge!({ addedk: 'addedv' })
end
p myhash
# {:k1=>{:innerk1=>"innerv1", :addedk=>"addedv"}, :k2=>{:innerk2=>"innerv2", :addedk=>"addedv"}}