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

【Ruby3.x】Enumerator::Lazy定数の使い方

Lazy定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Lazy定数は、RubyのEnumeratorクラスに属し、遅延評価という特別な振る舞いを表す定数です。この定数は、Enumeratorオブジェクトに対して.lazyメソッドを呼び出した際に返される、Enumerator::Lazyクラスのオブジェクトを指します。

遅延評価とは、プログラミングにおいて、ある値の計算や処理を、その値が実際に必要とされる時点まで延期する手法を指します。通常のmapselectのようなメソッドは、すべての要素に対してすぐに処理を実行し、その結果を新しい配列として返しますが、Enumerator::Lazyを介してこれらのメソッドを適用すると、処理はすぐに実行されません。代わりに、処理の「定義」だけが行われ、具体的な値が取り出されるまで待機します。

この遅延評価の仕組みにより、特に無限のシーケンスや非常に大きなデータセットを扱う場合に、メモリ使用量を大幅に抑え、不要な計算を避けることができます。例えば、多数の要素を持つコレクションから最初の数件だけを必要とする場合、lazyメソッドを使用すれば、必要な数だけを処理し、残りの要素に対する計算は行われないため、処理効率が向上します。最終的にforceメソッドやto_aメソッドなどによって、実際にすべての処理が実行され、結果が返されます。

構文(syntax)

1(1..5).lazy.map { |x| x * 2 }.force

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ