From: Tanaka Akira Date: 2003-03-04T11:30:26+09:00 Subject: [ruby-dev:19717] File.open with block calls IO#close even if it is overriden ふと気がついたのですが、File.open にブロックを与えると有無をいわさず IO#close を呼ぶようです。たとえば、 % ruby -e ' class C < File def close p :called super end end C.open("/dev/null") {|f| p f; p f.method(:close) } ' # # というように、サブクラス C で再定義されていても、IO のメソッドが直接呼 ばれます。つまり、上の例でいえば :called と出力されることを期待したの にそうなりません。 (File#close を定義して、Kernel#open を呼んだときなども同様です。) これって意図的でしょうか? ちょっと自前でバッファリングしてみようかな、と思ったのですが... -- [田中 哲][たなか あきら][Tanaka Akira]