私はRubyには新しく、現在はPickaxeの本を読んでいます。私はFile.openセクションを見つけました。ここでは、ブロックをFile.open呼び出しのパラメータとして受け取り、ファイルが閉じられていることを保証します。今これは足に自分自身を撃つのを避けるために絶対に素晴らしい方法のように聞こえる、私はつま先で危険なほど低いので、私はそれを行くと思います。ここでは(それが重要ならばIRBに)私が書いたものである:File.openとRuby 1.8.7のブロック
File.open('somefile.txt', 'r').each { |line| puts line }``
私の期待は右、ファイルsomefile.txt
は、読んで、開いて印刷して閉じになるだろうということでしたか?私が間違って言うことができる限り。開いているファイルハンドルを見るためにlsof
を使用しても、まだ開いています。しかし、私は
f = File.open('somefile.txt', 'r').each { |line| puts line }
f.close()
を行う場合、私は、この例では、間違ったブロックを使用していたりブロックで使用するとき、私はFile.openの意味を理解するために失敗しています。私はruby-doc.org related to File.openのセクションを読んだが、それはちょうど私がやっていることが期待どおりに働くべきであることを確認するようだ。
誰も私が間違っていることを説明できますか?
File.open( 'somefile.txt'、 'r'){| f | f.each_line {| line | puts line}}も同様に動作します。ありがとう! – OldTroll