Изменение значения одного атрибута в коллекции Ruby - PullRequest
0 голосов
/ 17 февраля 2011

Скажем, например, у меня есть такая коллекция:

[{"name" => "Ganesh", "magic_number" => 7}, {"name" => "Comrade", "magic_number" => 2}...]

Как я могу изменить значение ВСЕХ магических номеров в коллекции на одно и то же значение (например, 8)?

Я уверен, что он использует что-то вроде карты или сбора, но я не могу сейчас сделать это и вернуть мне всю коллекцию с изменениями, только одно или другое ...

Ответы [ 2 ]

3 голосов
/ 17 февраля 2011

Просто используйте .each:

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 на месте, и я думаю, это то, что вам нужно.

1 голос
/ 17 февраля 2011

Это работает:

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"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...