Ruby2.6アドベントカレンダーの5日目の記事です。
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!
の別名です。