irb を 1 回限りのテキスト前処理ツールとして実行しています。テキストを印刷するだけですぐに問題が発生しました。
foo = File.open "bar"
foo.each_line {|l| puts l}
これは意図したとおりに印刷され、 が返されます#<File:emails plaintext>
。
ただし、同じオブジェクトを再度呼び出すと#each_line
、印刷は行われませんが、それでも返されます#<File:emails plaintext>
。
の呼び出しによってオブジェクトの内容File
が上書きされるのはなぜ#each_line
ですか? #each
のようなメソッドの存在理由は、突然変異が起こらないようにすることだと思いました。これを行うための適切な「ルビーの方法」は何ですか?