【Ruby3.x】Enumerator::feed()メソッドの使い方
feedメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
feedメソッドは、RubyのEnumeratorクラスに属し、Enumeratorオブジェクトが外部から値を受け取って、その内部の処理にフィードバックするために使用されるメソッドです。このメソッドは、イテレータが値を生成する際に、外部からの情報を利用して次の動作を決定するなど、イテレータと呼び出し元の間で双方向の通信を実現する際に非常に有用です。
具体的には、Enumerator.newで定義されたイテレータのブロック内でYielder#yieldが実行され、値が外部に渡されて一時的に処理が停止している間に、feedメソッドが呼び出されます。このfeedメソッドに引数として渡された値は、そのYielder#yieldの戻り値として、イテレータのブロック内部の処理に返送されます。
これにより、イテレータは単に値を一方的に生成するだけでなく、外部から送り返された値に応じて状態を変更したり、次の生成値を調整したりすることが可能になります。例えば、外部からのフィードバックに基づいて次のステップを決定するような、コルーチン(協調ルーチン)のような高度な制御フローを実現するために活用されます。
構文(syntax)
1enum = Enumerator.new do |yielder| 2 # yielder.yield の戻り値は feed から供給される 3 # feed が設定されていない最初の呼び出しでは nil となる 4 puts "yielder.yield(1) returned: #{yielder.yield(1).inspect}" 5 6 # feed で値が設定されている場合、yielder.yield の戻り値はその値となる 7 puts "yielder.yield(2) returned: #{yielder.yield(2).inspect}" 8end 9 10puts "First enum.next returns: #{enum.next.inspect}" 11enum.feed("value_from_feed") # 次の yielder.yield の戻り値を設定 12puts "Second enum.next returns: #{enum.next.inspect}"
引数(parameters)
req
- req: Enumerator::Yielder: Enumeratorから値を取り出すためのオブジェクト
戻り値(return)
nil
feed メソッドは、Enumerator オブジェクトに値を供給するために使用されます。このメソッドは値を返しません。