Ruby Tips!

RubyのTipsを紹介します

2つのハッシュをマージする

2つのハッシュをマージするには、Hash#updateHash#mergeを使う。

h1 = {a:1, b:2}
h2 = {b:3, c:4}
p h1.update(h2) #=> {:a=>1, :b=>3, :c=>4}

Hash#updateは同一のキーが存在する場合、引数で与えたハッシュの値を優先する。
Hash#mergeはブロック付きで呼び出すことができ、キーが重複していた場合はブロックの評価結果を使うようにできる。

h1 = {a:1, b:2}
h2 = {b:3, c:4}
p h1.merge(h2){|key, v0, v1|
  v0 + v1 # キーが重複していた場合は2つの値を加算する
} #=> {:a=>1, :b=>5, :c=>4}