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

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

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

作成日: 更新日:

基本的な使い方

chunk_whileメソッドは、レシーバである列挙可能なオブジェクトの要素を、指定された条件に基づいて連続するグループ(チャンク)に分割するメソッドです。このメソッドはブロックを受け取り、そのブロックは現在の要素と次の要素の2つを引数として評価されます。ブロックが真(true)を返す間は、現在の要素と次の要素は同じチャンクに属すると見なされ、チャンクに蓄積されていきます。ブロックが偽(false)を返した時点で、それまでの要素で一つのチャンクが完成し、新しいチャンクが次の要素から開始されます。

特にEnumerator::Lazyに所属しているため、このchunk_whileメソッドは遅延評価の特性を持ちます。これは、すべての要素を一度にメモリに読み込んでから処理を開始するのではなく、必要になった時点でそのチャンクを生成し、順次処理を進めることを意味します。この遅延評価の性質により、非常に大量のデータや無限に続く可能性のあるストリームを扱う場合でも、メモリの使用量を抑えながら効率的に処理を実行することが可能になります。例えば、膨大なログファイルから特定の連続する情報群を抽出する場合や、大規模なデータストリームから特定の条件を満たす一連のデータを区切り出す場合などに、その効果を発揮します。このように、リソースを効率的に利用しつつ、柔軟なグループ化処理を実現するのがchunk_whileメソッドの役割です。

構文(syntax)

1[1, 2, 3, 5, 6, 8, 9, 10].lazy.chunk_while { |a, b| a + 1 == b }.to_a

引数(parameters)

引数なし

引数はありません

戻り値(return)

Enumerator::Lazy

与えられたブロックの条件が満たされるまで要素をグループ化し、その結果を遅延評価(lazy evaluation)されるイテレータとして返します。

関連コンテンツ