キーが重複するハッシュをマージする
2つのハッシュをマージするときにキーが重複するとレシーバを優先されてしまう
$ pry [1] pry(main)> h1 = {a: [1, 2, 3], b: [1, 2, 3]} => {:a=>[1, 2, 3], :b=>[1, 2, 3]} [2] pry(main)> h2 = {a: [10], c: [10,11]} => {:a=>[10], :c=>[10, 11]} [3] pry(main)> h1.merge(h2) => {:a=>[10], :b=>[1, 2, 3], :c=>[10, 11]}
Hash#mergeはブロックを受け取ることができて、キーが重複した時の挙動を指定することができる
$ pry [1] pry(main)> h1 = {a: [1, 2, 3], b: [1, 2, 3]} => {:a=>[1, 2, 3], :b=>[1, 2, 3]} [2] pry(main)> h2 = {a: [10], c: [10,11]} => {:a=>[10], :c=>[10, 11]} [3] pry(main)> h1.merge(h2) { |key, h1v, h2v| h1v + h2v } => {:a=>[1, 2, 3, 10], :b=>[1, 2, 3], :c=>[10, 11]}