ファイルをイテレータ処理

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

ファイルをオープンして、1行ずつ読み込んでいく処理もイテレータを用いると簡単です。
以下のデータが記述されたファイルを処理します。

スポンサーリンク

lang.dat

Ruby, Java
Perl, PHP, JavaScript
COBOL, C++, Python

スクリプトを以下のように書いて実行します。

fn = "lang.dat"
 
puts "--- open ~ close"
file = File.open(fn)
file.each{|line|
    puts line
}
file.close        # closeを忘れないようにする
 
puts "--- open ~ no close"
open(fn){|f|    # ファイルをブロックに渡し、一度だけブロックを起動。ここをブロックと呼ぶ。
    f.each{|line|    # 1行ずつイテレータ処理。ここをイテレータと呼ぶ。
        puts line
    }
}    # ブロックを抜ける直前に自動的にcloseしてくれるので、closeを明示する必要がない。
 
puts "--- open ~ while"
open(fn){|f|
    while line = f.gets        # while文でも処理可能
        puts line
    end
}

実行結果。

--- open ~ close
Ruby, Java
Perl, PHP, JavaScript
COBOL, C++, Python
--- open ~ no close
Ruby, Java
Perl, PHP, JavaScript
COBOL, C++, Python
--- open ~ while
Ruby, Java
Perl, PHP, JavaScript
COBOL, C++, Python
スポンサーリンク
 
スポンサーリンク