Ruby 2.6 の変更点 - Array

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

qiita.com

Array

Array#union 追加

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

引数に指定した配列を結合した新しい配列オブジェクトを返します。重複した要素は削除されます。

ary1 = [1, 2, 3]
ary2 = ary1.union([2, 3, 4, 5])
ary1 #=> [1, 2, 3]
ary2 #=> [1, 2, 3, 4, 5]

複数の配列を指定できること以外は Array#| と同じ。

Array#difference 追加

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

引数に指定した配列の要素ではない要素からなる新しい配列を返します。

ary1 = [1, 2, 3, 4, 5]
ary2 = ary1.difference([1, 3, 5])
ary1 #=> [1, 2, 3, 4, 5]
ary2 #=> [2, 4]

複数の配列を指定できること以外は Array#- と同じ。

Array#filter, Array#filter! 追加

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

Array#select, Array#select! の別名。

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

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

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