2010-11-03 29 views
38

J'ai 2 hash, par exemple:Somme 2 hash attributs avec la même clé

{'a' => 30, 'b' => 14} 
{'a' => 4, 'b' => 23, 'c' => 7} 

a, b et c sont des objets. Comment puis-je résumer ces touches de hashes pour obtenir un nouveau hachage comme:

{'a' => 34, 'b' => 37, 'c' => 7} 

Répondre

69
a_hash = {'a' => 30, 'b' => 14} 
b_hash = {'a' => 4, 'b' => 23, 'c' => 7} 

a_hash.merge(b_hash){ |k, a_value, b_value| a_value + b_value } 
=> {"a"=>34, "b"=>37, "c"=>7} 

b_hash.merge(a_hash){ |k, b_value, a_value| a_value + b_value } 
=> {"a"=>34, "b"=>37, "c"=>7}