Regard to "[ruby-list:9037] Re: making extension module"
  by ttate / jaist.ac.jp
    at Tue, 11 Aug 1998 14:52:52 +0900

有馬@FITECです。

>;; デストラクタがあると嬉しいこと、、、、
>;; これがなかなか思いつかない。(^^;

File, db, Socket のクローズとか、オブジェクトを破棄する際にやって
ほしいことあれこれをやるのがデストラクタだと思ってたんですが。

普通のファイル出力だとこうなりますね。

def foo
  f = File.open("hello", "w")
  f.write "hello"
  f.close
end

ここで、f の寿命は、def のスコープ中だけなのだから、
f.close は勝手に起動してくれると嬉しいかと思います。

Ruby を使いはじめたとき、new で initialize が 呼ばれるのに対応して、
GC 起動時には、もしあれば呼ばれる finalize というメソッドがあるかなと
思ったのを思い出しました。

def FILE
  ...
  def finalize
    close
  end
  ...
end

--
 有馬 康弘 <fit0298 / fitec.co.jp>