まつもと ゆきひろです

In message "[ruby-list:5231] Re: ruby for perl users"
    on 97/11/10, Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp> writes:

|原です。

|> |◎ ファイルの扱い方は?
|
|> f = open(filename)
|> begin
|>   while line = f.gets
|>     print line
|>   end
|> ensure
|>   f.close
|> end
|> 
|> のように例外処理をすることが多いです。
|
|この例外というのも Perl => ruby な人には、疑問の多いところで、
|ruby はやたらに例外を発生させて不便だと誤解されがちです。

という意見ももっともなので1.1b0からはCommon Lispを参考にした
新しいメソッドを定義しました.名付けて

  IO.with_open_stream(path[,mode])

これはこう使います.

  IO.with_open_stream("file") do |f|
    while line = f.gets
      print line
    end
  end

これでensureでのcloseを気にする心配は無くなります.もっとも
こんなメソッド自分で定義しようと思えば

  def IO.with_open_stream(path, mode="r")
    f = open(path, mode)
    begin
      yield f
    ensure
      f.close
    end
  end

で書けてしまうんですけどね.

                                まつもと ゆきひろ /:|)