【Ruby3.x】Enumerator::Generator定数の使い方
Generator定数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
Generator定数は、Ruby 2.x系においてEnumeratorオブジェクトが値を生成する仕組みを示す定数でした。これは、Enumerator.newにブロックを渡して独自の列挙子を作成する際、そのブロックが引数として受け取るオブジェクトの型を示していました。このオブジェクトはyieldメソッドを持ち、これを介して生成された値を外部の列挙処理に順次渡すことで、メモリ上に全てのデータを保持することなく、必要な時に値を生成する「ジェネレータ」の役割を担っていました。
しかし、Ruby 3においては、このEnumerator::Generator定数および関連クラスは削除されています。現在、同様の機能はEnumerator::Yielderというクラスによって提供されています。Enumerator::YielderもGeneratorと同様に、Enumerator.newのブロック内でyieldメソッドを使用し、値を外部のイテレータに渡すインターフェースを提供することで、効率的な値の生成と受け渡しを可能にしています。そのため、Ruby 3以降でジェネレータのような振る舞いを実装する際には、Enumerator::Yielderを使用することが適切です。
構文(syntax)
1enumerator = Enumerator.new do |yielder| 2 yielder.is_a?(Enumerator::Generator) 3 yielder.yield("element1") 4 yielder.yield("element2") 5end
引数(parameters)
引数なし
引数はありません
戻り値(return)
Class
Enumerator::Generator は、Enumerator の生成に使用されるクラスです。