dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

rubyのファイナライザ

2010-12-10 23:37:42 | linux
ObjectShare.define_finalizerを使って、クラスの終期化処理をしてみました。

■プログラム

class TestObjectShare
@@obj = nil

private
def initialize()
print("初期化処理\n")
end

def self.finalizer()
proc do
print("終期化処理\n")
end
end

def self.do_something()
if ! @@obj
@@obj = self.new
ObjectSpace.define_finalizer(@@obj, TestObjectShare.finalizer)
end

print("メソッド実行\n")
end
end


TestObjectShare.do_something

■実行結果
初期化処理
メソッド実行
終期化処理


プログラム終了時に終期化処理が行われています。