在红宝石中合并和附加哈希值

any*_*acy 1 ruby hash

我有两个像这样的哈希

h1 = {:a=>[:client]}
h2 = {:a=>[:user]}
Run Code Online (Sandbox Code Playgroud)

我希望将它们合并在一起但保留两个哈希值的值:

{:a=>[:user, :client]}
Run Code Online (Sandbox Code Playgroud)

我尝试了合并方法,但它删除了一个值,只保留一个.我在用ruby 2.2

Ste*_*fan 5

由于您的值已经是数组,因此您可以使用merge块并调用Array#+:

h1.merge(h2) { |key, oldval, newval| oldval + newval }
#=> {:a=>[:client, :user]}
Run Code Online (Sandbox Code Playgroud)

  • @mudasobwa我用过`+`,因为标题上写着"追加" (2认同)