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

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

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

作成日: 更新日:

基本的な使い方

resultメソッドは、StopIterationクラスのインスタンスに対して呼び出され、イテレーションの停止時に付随する最終的な結果値を取得するメソッドです。

StopIterationクラスは、Rubyにおけるイテレータやシーケンス処理が、これ以上値を提供できない状態になったことを示す組み込みの例外クラスです。これは、たとえば要素を順に処理するループや、値を次々に生成するジェネレータのような仕組みが、すべての処理を終えたことを通知するために内部的に利用されます。

特に、Ruby 3で導入されたFiberオブジェクトのような、自身の実行を一時停止・再開しながら値を生成するコルーチンのような仕組みにおいて、すべての処理が完了し、最終的な値を返して停止する際に内部的にStopIteration例外が発生することがあります。このとき、Fiber.resumeメソッドの呼び出しがStopIteration例外を発生させた場合、その例外オブジェクトからresultメソッドを呼び出すことで、Fiberが実行の最後に返したその値を取得できます。

このメソッドは、イテレーションやコルーチン処理の終了時に、そのプロセスが最終的に到達した「成果」や「結果データ」を、例外という形で伝達されたStopIterationオブジェクトから安全に取り出すための重要な役割を担っています。システムエンジニアを目指す皆様が、Rubyの高度な並行処理やイテレーション機構の内部動作を深く理解する上で、このresultメソッドの存在と用途を知っておくことは非常に役立つでしょう。

構文(syntax)

1stop_iteration_object = StopIteration.new("Iteration finished", "Final Result Value")
2stop_iteration_object.result

引数(parameters)

引数なし

引数はありません

戻り値(return)

Object

StopIteration オブジェクトが保持している、イテレータの次の要素を返します。イテレータが終了している場合は nil を返します。

関連コンテンツ