Как слить два хэша? Есть два хеша:person1 = { first: "Alex", last: "Go" } person2 = { first: "Masha", last: "Valeeva" } Можно ли с помощью метода merge изменить только значение ключа last:, либо каким умный и простым (рубивеевским) способом это лучше сделать?
Да, можно использовать метод merge!, чтобы объединить два хеша и изменить значение ключа last. Например:
person1 = { first: "Alex", last: "Go" }person2 = { first: "Masha", last: "Valeeva" }
person1.merge!(person2) { |key, old_val, new_val| key == :last ? new_val : old_val }
puts person1
Этот код объединит два хеша, оставив значение ключа last равным значению из второго хеша, и выведет результат:
{ :first=>"Alex", :last=>"Valeeva" }Также можно сделать это более простым способом, просто присвоив новое значение ключу last:
person1[:last] = person2[:last]puts person1
Этот код также изменит значение ключа last в первом хеше на значение из второго хеша и выведет результат:
{ :first=>"Alex", :last=>"Valeeva" }