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

【Ruby3.x】Fiber::yield()メソッドの使い方

yieldメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

yieldメソッドは、RubyのFiberクラスに属し、現在実行中のファイバーの実行を一時的に中断し、別のファイバーに制御を移すことを実行するメソッドです。

このメソッドが呼び出されると、実行中のファイバーは一時停止し、そのファイバーをFiber#resumeメソッドで開始した呼び出し元のファイバーへ処理の制御が戻されます。同時に、yieldメソッドに引数として渡された値は、この呼び出し元のファイバーのFiber#resumeの戻り値として返されます。これにより、一時停止するファイバーから呼び出し元への値の受け渡しが可能になります。

一時停止したファイバーは、その後、再びFiber#resumeメソッドが呼び出されるまで、その実行状態を維持します。そして、Fiber#resumeによって再開された際には、そのresumeメソッドに渡された引数を、yieldメソッドの戻り値として受け取ることができます。このように、yieldresumeは対になっており、相互に値を受け渡しながら処理を協調させます。

主に、複数のファイバー間で処理を協調させたり、コルーチンのような構造でプログラムの実行フローを柔軟に制御したりするために利用されます。これにより、複雑な非同期処理や、中断と再開を繰り返す必要がある処理を、より分かりやすく記述することができます。

構文(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に渡された引数です。

関連コンテンツ