【Ruby3.x】Enumerator::Yielder::yield()メソッドの使い方
yieldメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
yieldメソッドは、イテレータが値を生成し、外部にその値を渡すために使用されるメソッドです。このメソッドは、RubyのEnumerator::Yielderクラスのインスタンスが持つ重要な機能であり、特にEnumerator.newに渡されるブロック内で利用されます。
Enumeratorオブジェクトは、通常、eachメソッドなどのイテレータを介して要素を順に取り出します。このとき、Enumerator.newのブロック内でYielderオブジェクトのyieldメソッドを呼び出すと、その引数として渡された値が、Enumeratorから取り出される次の要素として設定されます。yieldメソッドが呼び出されるたびに、Enumeratorは一つの値を放出し、その後、外部から次の要素が要求されるまで自身の実行を一時停止します。これにより、必要な時に必要なだけ値を生成する、効率的なデータストリームを構築できます。
このメカニズムは、既存のコレクションに限定されず、動的に値を生成するような複雑なイテレータを簡単に作成することを可能にします。例えば、無限に続く数列や、複雑な計算に基づいて次々と新しい値を生成するようなシナリオで非常に役立ちます。
なお、Rubyにはブロックを呼び出すためのyieldキーワードが存在しますが、Enumerator::Yielder#yieldはYielderオブジェクトに対して明示的に呼び出されるメソッドであり、その役割は異なります。これを理解することで、より柔軟なデータ列挙を実装できます。
構文(syntax)
1Enumerator.new do |yielder_object| 2 yielder_object.yield an_object 3end
引数(parameters)
*rest
- *rest: 任意個数の引数。これらは Enumerator::Yielder オブジェクトが作成された際にブロックに渡される引数になります。
戻り値(return)
Object
yieldメソッドは、Enumerator::Yielderオブジェクトに渡された値を返します。