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

【Ruby3.x】Enumerator::Lazy::uniq()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

uniqメソッドは、Enumerator::Lazyクラスに属するメソッドです。このメソッドは、自身であるEnumerator::Lazyオブジェクトに対して呼び出され、これまでに評価された要素の中で重複しない要素のみを抽出し、新しい遅延評価のEnumerator::Lazyオブジェクトを生成します。

Enumerator::Lazyは、要素の処理を必要となるまで遅らせる「遅延評価」の特性を持っています。そのため、このuniqメソッドは、元のコレクションのすべての要素を一度に読み込んでメモリに展開してから重複を取り除くわけではありません。代わりに、要素が一つずつ要求されるたびに、その要素がそれまでに処理された要素の中に存在するかどうかをチェックし、初めて出現する要素だけを後続の処理に渡します。

具体的には、内部的に既に見た要素を記憶しながら、ストリームから要素を取り出し、その要素が記憶された集合に含まれていない場合のみ、それを結果のEnumerator::Lazyオブジェクトの要素として提供します。これにより、非常に大きなデータセットや無限のストリームに対して重複排除を行う際に、メモリ使用量を抑えつつ、必要な処理のみを実行することが可能になります。

生成されたEnumerator::Lazyオブジェクトも遅延評価の特性を持つため、実際にその要素が必要とされるまで重複排除の処理は行われません。これは、大規模なデータ処理において高い効率性をもたらします。

構文(syntax)

1[1, 2, 2, 3, 1].lazy.uniq

引数(parameters)

引数なし

引数はありません

戻り値(return)

Enumerator::Lazy

このメソッドは、元のEnumerator::Lazyオブジェクトから重複する要素を取り除いた新しいEnumerator::Lazyオブジェクトを返します。

関連コンテンツ