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

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

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

作成日: 更新日:

基本的な使い方

each_lineメソッドは、IOオブジェクト(ファイルや標準入力など)からデータを1行ずつ読み込み、それらを処理するために使用するメソッドです。このメソッドは、ファイルやストリームの内容を一行ずつ検査したり、加工したりする場面で特に役立ちます。

each_lineメソッドにブロックを渡すと、IOオブジェクトから読み込んだ各行がそのブロックに文字列として渡されます。ブロック内のコードは、読み込んだ各行に対して実行されるため、例えばファイルの全行を読み込んで内容を表示したり、特定の条件に合致する行だけを抽出したりといった処理を、簡潔に記述することが可能です。

もしブロックを渡さずにeach_lineメソッドを呼び出した場合、このメソッドはEnumeratorオブジェクトを返します。Enumeratorを利用することで、遅延評価による効率的な処理を行ったり、mapやselectといった他のEnumerableモジュールのメソッドと組み合わせて、より柔軟なデータ処理ロジックを構築したりすることが可能です。

行の区切り文字は、デフォルトでは改行文字\nが使用されますが、引数で任意の文字列を指定することで、異なる区切り文字に基づいて行を分割することもできます。さらに、読み込んだ行の末尾に含まれる改行文字を自動的に取り除くオプション(chomp: true)も提供されており、行の内容のみを扱いたい場合に便利です。このメソッドは、ファイルやストリーム処理の基本として、Rubyプログラミングにおいて頻繁に利用されます。

構文(syntax)

1File.open("example.txt", "r") do |io_object|
2  io_object.each_line do |line|
3    # line を使って各行を処理します
4  end
5end

引数(parameters)

separator = $/, limit = nil, chomp: false

  • separator = $/ : 区切り文字を指定します。デフォルトは改行文字($/)です。
  • limit = nil : 読み取る行数の上限を指定します。nilの場合、上限はありません。
  • chomp: false : trueを指定すると、各行の末尾の改行文字を取り除きます。

戻り値(return)

self または Enumerator

IO クラスの each_line メソッドは、ファイルの内容を1行ずつ処理するためのイテレータを返します。ブロックを渡さずに呼び出した場合は、各行を要素とする Enumerator オブジェクトを返します。

関連コンテンツ

関連プログラミング言語