Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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#yieldYielderオブジェクトに対して明示的に呼び出されるメソッドであり、その役割は異なります。これを理解することで、より柔軟なデータ列挙を実装できます。

構文(syntax)

1Enumerator.new do |yielder_object|
2  yielder_object.yield an_object
3end

引数(parameters)

*rest

  • *rest: 任意個数の引数。これらは Enumerator::Yielder オブジェクトが作成された際にブロックに渡される引数になります。

戻り値(return)

Object

yieldメソッドは、Enumerator::Yielderオブジェクトに渡された値を返します。

関連コンテンツ