【Ruby3.x】Fiber::yield()メソッドの使い方
yieldメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
yieldメソッドは、RubyのFiberクラスに属し、現在実行中のファイバーの実行を一時的に中断し、別のファイバーに制御を移すことを実行するメソッドです。
このメソッドが呼び出されると、実行中のファイバーは一時停止し、そのファイバーをFiber#resumeメソッドで開始した呼び出し元のファイバーへ処理の制御が戻されます。同時に、yieldメソッドに引数として渡された値は、この呼び出し元のファイバーのFiber#resumeの戻り値として返されます。これにより、一時停止するファイバーから呼び出し元への値の受け渡しが可能になります。
一時停止したファイバーは、その後、再びFiber#resumeメソッドが呼び出されるまで、その実行状態を維持します。そして、Fiber#resumeによって再開された際には、そのresumeメソッドに渡された引数を、yieldメソッドの戻り値として受け取ることができます。このように、yieldとresumeは対になっており、相互に値を受け渡しながら処理を協調させます。
主に、複数のファイバー間で処理を協調させたり、コルーチンのような構造でプログラムの実行フローを柔軟に制御したりするために利用されます。これにより、複雑な非同期処理や、中断と再開を繰り返す必要がある処理を、より分かりやすく記述することができます。
構文(syntax)
1f = Fiber.new do 2 received_value = Fiber.yield("value_to_caller") 3end
引数(parameters)
*rest
- rest: Fiberの実行を一時停止し、呼び出し元に値を渡します。渡す値は可変長引数で指定します。
戻り値(return)
Object
Fiber.yieldは、Fiberの実行を一時停止し、値を呼び出し元に返します。返される値は、Fiber.yieldに渡された引数です。