Ruby 2.6 の変更点 - Hash

Ruby2.6アドベントカレンダーの5日目の記事です。

qiita.com

Hash

Hash#merge, merge!, update が複数の引数を受けつける

https://bugs.ruby-lang.org/issues/15111

h = {a: 123}
h1 = {b: 456}
h2 = {c: 789}
h.merge(h1).merge(h2)  #=> {:a=>123, :b=>456, :c=>789}

みたいにしてたのを

h.merge(h1, h2)  #=> {:a=>123, :b=>456, :c=>789}

と書くことができます。merge!, update も同様です。

Hash#to_h にブロックを渡すとキーと値を変換できる

https://bugs.ruby-lang.org/issues/15143

{a: 123, b: 456}.to_h{|k, v| [k.to_s, v*2]}  #=> {"a"=>246, "b"=>912}

Hash#filter, Hash#filter! の追加

https://bugs.ruby-lang.org/issues/13784

Hash#filter, Hash#filter! はそれぞれ Hash#select, Hash#select! の別名です。