Ruby2.6アドベントカレンダーの6日目の記事です。
Enumerator
Enumerator#+
, Enumerator#chain
追加
https://bugs.ruby-lang.org/issues/15144
Enumerator
オブジェクトを結合した Enumerator::Chain
オブジェクトを返します。
e = (1..3).each + [4, 5] #=> #<Enumerator::Chain: [#<Enumerator: 1..3:each>, [4, 5]]> e.to_a #=> [1, 2, 3, 4, 5] e = (1..3).chain([4, 5], [6, 7]) #=> #<Enumerator::Chain: [1..3, [4, 5], [6, 7]]> e.to_a #=> [1, 2, 3, 4, 5, 6, 7]
このために Enumerator::Chain
クラスも追加されています。
Enumerator::ArithmeticSequence
追加
https://bugs.ruby-lang.org/issues/13904
Integer#step
, Range#step
が返すオブジェクトのクラスです。
2.5 までは Enumerator
を返してました。
a = 1.step(10, 2) #=> #<Enumerator::ArithmeticSequence> a.begin #=> 1 a.end #=> 10 a.first(2) #=> [1, 3] # これは 2.5 から可能 a.last(2) #=> [7, 9] a.step #=> 2
Enumerator::Lazy#filter
追加
https://bugs.ruby-lang.org/issues/13784
Enumerator::Lazy#filter
は Enumerator::Lazy#select
の別名として追加されました。
Enumerable
Enumerable#chain
追加
https://bugs.ruby-lang.org/issues/15144
Enumerator#chain
と同様です。
Enumerable#to_h
にブロックを渡すとキーと値を変換できる
https://bugs.ruby-lang.org/issues/15143
Array#to_h
や Hash#to_h
と同様です。
(1..5).to_h{|x| [x, x**2]} #=> {1=>1, 2=>4, 3=>9, 4=>16, 5=>25}
Enumerable#filter
追加
https://bugs.ruby-lang.org/issues/13784
Enumerable#filter
は Enumerable#select
の別名として追加されました。