Какво е поведението на ruby ​​Hash#merge, когато се използва с блок

Изглежда не е много документирано:

hsh.merge(other_hash){|key, oldval, newval| block} → a_hash

http://ruby-doc.org/core/classes/Hash.html#M002880


person dreftymac    schedule 05.03.2010    source източник
comment
Наистина! Смених официалния документ.   -  person Marc-André Lafortune    schedule 06.03.2010
comment
Благодаря за това, Марк-Андре. Тази промяна публикувана ли е вече някъде?   -  person inger    schedule 15.03.2010


Отговори (1)


Както може да се очаква, полученият хеш ще съдържа стойността, върната от блок за всеки ключ, който съществува в двата хеша, които се обединяват:

>> h1 = {:a => 3, :b => 5, :c => 6}
=> {:a=>3, :b=>5, :c=>6}
>> h2 = {:a => 4, :b => 7, :d => 8}
=> {:a=>4, :b=>7, :d=>8}
>> h1.merge h2
=> {:a=>4, :b=>7, :c=>6, :d=>8}
>> h1.merge(h2){|k,v1,v2| v1}
=> {:a=>3, :b=>5, :c=>6, :d=>8}
>> h1.merge(h2){|k,v1,v2| v1+v2}
=> {:a=>7, :b=>12, :c=>6, :d=>8}
person Mladen Jablanović    schedule 05.03.2010