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
■実行結果
初期化処理
メソッド実行
終期化処理
プログラム終了時に終期化処理が行われています。
■プログラム
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
■実行結果
初期化処理
メソッド実行
終期化処理
プログラム終了時に終期化処理が行われています。