ruby相当于析构函数

时间:2013-06-17 08:08:08

标签: ruby destructor rubypython

我正在使用RubyPython导入Python模块。我正在构造函数(RubyPython.start)中进行initialize,我想我应该在析构函数中对称地执行RubyPython.stop,但不幸的是,似乎Ruby中没有析构函数:

class QDSHiveHelper
    def initialize
        RubyPython.start
        qds = RubyPython.import('blah')
        ...
    end
    def do_something
        qds.some_function
        ...
    end 
    def finalize
        RubyPython.stop
    end
end

有人可以解释一下如何做到这一点吗? ObjectSpace.define_finalize似乎气馁,并且有一些陷阱(不能使用封闭等)。我也可以离开RubyPython悬挂而不是打电话给stop,但我不知道会有什么后果。什么是最好的出路?

1 个答案:

答案 0 :(得分:4)

当一个对象被销毁时,会有一个名为ObjectSpace.define_finalizer的钩子。

相关问题