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

【Ruby3.x】CSV::Parser::InputsScanner::each_line()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

each_lineメソッドは、CSV::Parser::InputsScannerクラスに属し、解析対象の入力ソースから行単位でデータを読み出し、処理を実行するメソッドです。このメソッドは、CSVデータのような構造化されたテキストデータを扱う際に、その内容を一行ずつ順番に読み込んで利用するために設計されています。

具体的には、each_lineメソッドにブロックを渡して呼び出すと、スキャナーが保持する入力データ(例えばファイルストリームや文字列など)から読み込んだ各行を、そのブロックに引数として渡しながら繰り返し処理を実行します。これにより、開発者は各行のデータに対して特定の操作を行ったり、条件に基づいてフィルタリングしたり、内容を変換したりといった処理を効率的に記述することができます。

もしブロックを渡さずにeach_lineメソッドを呼び出した場合、このメソッドはEnumeratorオブジェクトを返します。このEnumeratorを利用することで、mapselectなどのEnumerableモジュールの多様なメソッドを組み合わせて、行データをさらに柔軟に、かつ遅延的に処理することが可能になります。

このメソッドは、特に大量のCSVデータを扱う際に、ファイル全体を一度にメモリに読み込むことなく、必要な行だけを順次処理することでメモリ使用量を抑え、アプリケーションのパフォーマンス向上に貢献します。CSV::Parser::InputsScannerがCSVの解析を効率的に行うための内部的な基盤として利用される重要な機能の一つです。

構文(syntax)

1inputs_scanner.each_line do |line|
2end

引数(parameters)

row_separator

  • row_separator: CSVの行を区切る文字を指定します。デフォルトでは改行コード(\n)が使用されます。

戻り値(return)

self (if block given), Enumerator (if no block given)

ブロックが与えられた場合は self を、ブロックが与えられなかった場合は Enumerator を返します。

関連コンテンツ