【Ruby3.x】Enumerator::Lazy::with_index()メソッドの使い方
with_indexメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
with_indexメソッドは、Enumerator::Lazyオブジェクトの各要素に対し、その要素のインデックス(順番を示す番号)を紐付けて処理を実行するメソッドです。このメソッドは、Enumerator::Lazyの特性である「遅延評価」を保ちつつ、コレクションの要素を順番に処理する際に、現在の要素が全体の何番目であるかという情報が必要な場合に非常に役立ちます。例えば、大量のデータから特定の順番の要素だけを抽出したり、要素の値とその位置に基づいて条件分岐を行ったりする際に利用されます。
ブロックを渡して使用すると、ブロックには各要素とそのインデックスが引数として渡されます。インデックスは通常0から始まりますが、オプションで開始値を指定することも可能です。with_indexが返却するのは、[要素, インデックス]というペアを生成する新しいEnumerator::Lazyオブジェクトです。これにより、後続のEnumerator::Lazyメソッド(例えばmapやselectなど)も、このペアを対象として遅延評価的に処理を継続できます。この仕組みにより、元のコレクションが非常に大規模な場合でも、メモリ消費を抑えながら効率的に要素とインデックスを使った処理を行うことが可能になります。
構文(syntax)
1(1..3).lazy.map { |x| x * 10 }.with_index do |value, index| 2 puts "Value: #{value}, Index: #{index}" 3end
引数(parameters)
引数なし
引数はありません
戻り値(return)
Enumerator::Lazy
このメソッドは、要素とそのインデックスをペアにした新しいEnumerato::Lazyオブジェクトを返します。