【发布时间】:2011-07-31 16:16:01
【问题描述】:
我有两个哈希,其结构类似于:
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
但我收到运行时错误:can't add a new key into hash during iteration。在 Ruby 中合并这些哈希的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3