我有两个这样的大麻
h1 = {:a=>[:client]}
h2 = {:a=>[:user]}
我很想把它们合并在一起,但是不要把两个散列值都合并在一起,比如:
{:a=>[:user, :client]}
我尝试了merge方法,但它删除了一个值,只保留了一个值。我正在使用
ruby 2.2
最佳答案
尝试inject:
h1.inject(h2.dup) do |memo, (k,v)|
memo[k] ||= []
memo[k] += v
memo
end
memo
以传递给inject
,h2
的值开始。它在每次迭代时都被块的返回值替换在我们的例子中,我们更新memo
并返回它,从而建立备忘录,直到最后一次迭代时它作为答案返回。如果没有
memo[k] ||= []
值或缺少键,则不严格需要块中的第一行。nil
用于避免变异h2.dup
。