【Ruby3.x】Enumerator::Lazy::filter_map()メソッドの使い方
filter_mapメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
filter_mapメソッドは、RubyのEnumerator::Lazyオブジェクトに対して、コレクションの要素をフィルタリングしながら同時に変換を行うメソッドです。このメソッドは、Ruby 3で利用可能であり、特に大規模なデータセットや無限ストリームを効率的に処理するために設計されています。
このメソッドは、各要素を引数として受け取るブロックを評価します。ブロックの戻り値がnilまたはfalseであった場合、その要素は結果のシーケンスから除外されます(フィルタリング)。一方、ブロックがnilまたはfalse以外の値を返した場合、その戻り値が新しいシーケンスの要素として採用されます(変換)。
filter_mapを使用することで、個別のfilter(またはselect)とmapを連続して呼び出す場合と比較して、一度のイテレーションで両方の処理を完結させることが可能になります。これにより、中間的な配列やコレクションを生成する必要がなくなり、メモリ使用量を抑えつつ処理速度の向上に寄与します。Enumerator::Lazyが持つ遅延評価の特性と組み合わせることで、実際にその要素が必要とされるまで計算が実行されないため、非常に効率的なデータ処理が実現できます。
構文(syntax)
1(1..5).lazy.filter_map do |i| 2 i * 2 if i.odd? 3end.force
引数(parameters)
引数なし
引数はありません
戻り値(return)
Enumerator::Lazy
filter_map メソッドは、ブロックで実行された処理の結果を順次取得できる新しい Enumerator::Lazy オブジェクトを返します。