【Ruby3.x】Enumerator::Lazy::slice_when()メソッドの使い方
slice_whenメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
slice_whenメソッドは、Enumerator::Lazyクラスに属し、レシーバから要素を遅延評価で順に取得しながら、与えられた条件に基づいて要素をサブ配列(スライス)に分割する処理を実行するメソッドです。このメソッドはブロックを引数に取り、そのブロックは連続する2つの要素、具体的には現在の要素と次の要素を受け取ります。ブロックがtrueを返した場合、現在の要素でサブ配列の区切りと判断され、その区切りまでを一つのグループとして確定し、次の要素から新しいサブ配列の生成を開始します。
Enumerator::Lazyに属しているため、大規模なデータセットや無限のシーケンスを扱う際にも、全ての要素を一度にメモリにロードすることなく、必要な時に必要なだけ処理を行う「遅延評価」の恩恵を受けられます。これにより、メモリ使用量を抑えつつ、効率的なデータ処理を実現します。
例えば、数値が連続している区間ごとにグループ化したい場合や、ログデータの中から特定のパターンが出現するたびに新しいログの区切りとしたい場合などに非常に有効です。戻り値は新しいEnumerator::Lazyオブジェクトとなり、このオブジェクトをイテレートすると、条件によって分割された各サブ配列が順に提供されます。これは、データフローを制御し、柔軟にデータを構造化するための強力な手段となります。
構文(syntax)
1(1..10).lazy.slice_when { |prev_element, current_element| current_element == 5 }.to_a
引数(parameters)
引数なし
引数はありません
戻り値(return)
Enumerator::Lazy
指定された条件で分割された要素を、遅延評価(lazy evaluation)を行う新しいEnumerator::Lazyオブジェクトとして返します。