Tengo dos hashes que tienen una estructura algo similar a esto:La fusión de los hashes multidimensionales en Ruby
hash_a = { :a => { :b => { :c => "d" } } }
hash_b = { :a => { :b => { :x => "y" } } }
quiero fusionar estos juntos para producir la siguiente almohadilla:
{ :a => { :b => { :c => "d", :x => "y" } } }
El La función de fusión reemplazará el valor de: a en el primer hash con el valor de: a en el segundo hash. Por lo tanto, escribí mi propia función de fusión recursiva, que se ve así:
def recursive_merge(merge_from, merge_to)
merged_hash = merge_to
first_key = merge_from.keys[0]
if merge_to.has_key?(first_key)
merged_hash[first_key] = recursive_merge(merge_from[first_key], merge_to[first_key])
else
merged_hash[first_key] = merge_from[first_key]
end
merged_hash
end
Pero consigo un error de ejecución: can't add a new key into hash during iteration
. ¿Cuál es la mejor manera de fusionar estos hashes en Ruby?
Gracias por eso, pensé que era algo así de tonto. –