У меня есть два хэша, структура которых примерно такая:
hash_a = { :a => { :b => { :c => "d" } } }
hash_b = { :a => { :b => { :x => "y" } } }
Я хочу объединить их вместе, чтобы получить следующий хэш:
{ :a => { :b => { :c => "d", :x => "y" } } }
Функция слияния заменит значение: a в первом хэше на значение: a во втором хеш-коде. Итак, я написал свою собственную рекурсивную функцию слияния, которая выглядит следующим образом:
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
Но я получаю сообщение об ошибке выполнения: не может добавить новый ключ в хэш во время итерации
. Как лучше всего объединить эти хэши в Ruby?