更改Ruby集合中一个属性的值

更改Ruby集合中一个属性的值,ruby,collections,Ruby,Collections,比如说,我有一个这样的收藏: [{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2}...] 如何将集合中所有幻数的值更改为相同的值(例如8) 我确信它使用的是地图或收藏之类的东西,但我现在似乎无法做到这一点,并返回整个收藏和更改,只有一个或另一个…这是有效的: x = [{"name" => "Ganesh", "magic_number" =&

比如说,我有一个这样的收藏:

[{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2}...]
如何将集合中所有幻数的值更改为相同的值(例如8)

我确信它使用的是地图或收藏之类的东西,但我现在似乎无法做到这一点,并返回整个收藏和更改,只有一个或另一个…

这是有效的:

x = [{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2}]
x.map{|i| i["magic_number"] = 0; i }

=> [{"magic_number"=>0, "name"=>"Ganesh"}, {"magic_number"=>0, "name"=>"Comrade"}]
这项工作:

x = [{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2}]
x.map{|i| i["magic_number"] = 0; i }

=> [{"magic_number"=>0, "name"=>"Ganesh"}, {"magic_number"=>0, "name"=>"Comrade"}]

只需使用
。每个

a = [{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2} ]
a.each { |x| x['magic_number'] = 8 }
# a is now [{"magic_number"=>8, "name"=>"Ganesh"}, {"magic_number"=>8, "name"=>"Comrade"}]

块的参数是对原始图元的引用,因此可以根据需要对其进行更改。请注意,这会将
a
更改到位,我认为这正是您所追求的。

只需使用
。每个

a = [{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2} ]
a.each { |x| x['magic_number'] = 8 }
# a is now [{"magic_number"=>8, "name"=>"Ganesh"}, {"magic_number"=>8, "name"=>"Comrade"}]

块的参数是对原始图元的引用,因此可以根据需要对其进行更改。请注意,这会在适当的位置更改
a
,我认为这正是您所追求的。

它返回一个新的哈希数组,其中的值已更改。OP希望将它们更改到位。@铁皮人:它们已更改到位,
.map
块正在对
x
数组中的值的引用进行操作。这将返回一个新的哈希数组,其中的值已更改。OP希望将它们更改到位。@铁皮人:它们已更改到位,
.map
块正在对
x
数组中的值进行引用。