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