【Ruby3.x】Enumerator::Lazy::enum_for()メソッドの使い方
enum_forメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
enum_forメソッドは、RubyのEnumerator::Lazyクラスのインスタンスに対して、特定の列挙メソッドを遅延評価の形式で実行するための新しいEnumerator::Lazyオブジェクトを生成するメソッドです。
このメソッドは、実行したい列挙メソッドの名前をシンボルまたは文字列で指定し、さらにそのメソッドに渡す引数も指定して呼び出します。Rubyの通常のenum_for(またはto_enum)がブロックなしで呼び出されたときにEnumeratorオブジェクトを返すのに対し、Enumerator::Lazy#enum_forは常に遅延評価されるEnumerator::Lazyオブジェクトを返します。
これにより、:mapや:selectといったEnumerableモジュールに定義されている組み込みメソッドだけでなく、独自のカスタム列挙メソッドも、遅延評価の特性を保ったまま適用できます。大きなデータ集合や無限シーケンスを扱う際に、メモリ使用量を抑えつつ、必要なデータのみを効率的に処理する遅延評価の利点を活用し、複雑なデータ変換やフィルタリングのチェーンを柔軟に構築するのに役立ちます。既存の遅延評価の処理フローに、特定の列挙操作を組み込みたい場合に利用されます。
構文(syntax)
1lazy_enumerator = [1, 2, 3].lazy.map { |i| i * 2 } 2lazy_enumerator.enum_for
引数(parameters)
method = :each, *args
- method = :each: 遅延評価のために使用するメソッド名をシンボルで指定します。デフォルトは
:eachです。 - *args: 遅延評価のために使用するメソッドに渡す追加の引数です。
戻り値(return)
Enumerator::Lazy
このメソッドは、自身を遅延評価可能なEnumerator::Lazyオブジェクトとして返します。