Я ищу элегантный способ присвоить значение, хранящееся внутри хэша, в ранее существовавшем объекте. Просто чтобы быть ясно, если у меня есть объект, скажем, OBJ с двумя атрибутами, скажем, имя и возраст, я хочу, чтобы назначить эти значения, поступающие из хэша, не сделать что-то вроде:DRY способ присвоить значения хэша объекту
obj.name = hash[:name]
obj.age = hash[:age]
Спасибо за ваше внимание. Simone
Не могли бы вы объяснить мне, почему у вас есть wirte m = "# {key} =" insted of m = "# {key}"? –
Ну, это сложно объяснить, но на самом деле очень просто. Сначала давайте скажем для объяснения того, что 'key' является строкой' x' и 'hash [key]' is '1' ... Теперь в Ruby код' obj.x = 1' фактически эквивалентен ' obj.x = (1) '. Поэтому в следующей строке, когда я делаю 'obj.send (m, ...)', мне нужно это _assign_ для этого свойства. Другими словами, если бы я не поместил знак равенства в имя метода, он бы назвал 'obj.x (1)' и 'x' просто не принимает параметр (потому что это свойство). То, что я хочу, это 'obj.x = (1)', и поэтому мне нужно '# {key} =' – rfunduk
Вы также можете сделать: 'hash.each do | key, value |' then use 'value' вместо' хэш [ключ] '. – PhilT