2010-03-05 2 views
8

Это, кажется, не быть документированы очень много:Что такое поведение рубин Hash # слияния при использовании с блоком

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

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

+0

Действительно! Я изменил официальный документ. –

+0

Спасибо за это, Марк-Андре. Это изменение уже опубликовано где-то? – inger

ответ

10

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

>> 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} 
Смежные вопросы