2010-11-03 13 views
38

tengo 2 hashes, por ejemplo:Suma 2 hashes atributos con la misma clave

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

donde a, y bc son objetos. ¿Cómo puedo resumir esas teclas hashes' para obtener una nueva almohadilla como:

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

Respuesta

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} 
Cuestiones relacionadas