Ruby 为什么我不能在each循环中合并散列

Ruby 为什么我不能在each循环中合并散列,ruby,Ruby,我试图在数组中循环,并将一个键/值对合并到此数组中的散列,但它不起作用。当我手动操作时,它正在工作。我做错了什么 :001 > array = [{foo: 5}, {bar: 3}] => [{:foo=>5}, {:bar=>3}] :002 > array.each{|hash| hash.merge(match: true)} => [{:foo=>5}, {:bar=>3}] :003 > array[0].merge(ma

我试图在数组中循环,并将一个键/值对合并到此数组中的散列,但它不起作用。当我手动操作时,它正在工作。我做错了什么

:001 > array = [{foo: 5}, {bar: 3}]
 => [{:foo=>5}, {:bar=>3}] 
:002 > array.each{|hash| hash.merge(match: true)}
 => [{:foo=>5}, {:bar=>3}] 
:003 > array[0].merge(match: true)
 => {:foo=>5, :match=>true}
使用而不是
合并
merge
方法返回一个新的散列,
merge将键值对添加到哈希中

array = [{ foo: 5 }, { bar: 3 }]
array.each { |hash| hash.merge!(match: true) }

@德米尔的回答是正确的

如果不想更改原始数组。您可以使用
map
而不是
each
,并将输出分配给新变量

array=[{foo:5},{bar:3}]
new|array=array.map{| hsh | hsh.merge(匹配:true)}