0

luabindクラスの__finalizeメソッドをオーバーライドするには?

そのような方法でこれをやろうとしています:

class A
function A:__init()
end
function A:__finalize()
end

local original_finalize_function = A.__finalize
A.__finalize = function(...)
  -- some custom logic
  if original_finalize_function then
   original_finalize_function(unpack(arg))
  end
end

local a = A    
a = nil

collectgarbage('collect')

しかし、lua はまだ元のファイナライザーしか呼び出しません。ただし、__init メソッドでは機能します。

local original_init_function = A.__init
A.__init = function(...)
 if original_init_function then
  original_init_function(unpack(arg))
 end
end

また、getmetatable(A).__finilize をオーバーライドしようとしました。あまりにも役に立ちません。

どうすれば上書きできますか? 前もって感謝します。

4

1 に答える 1

1

推測ですが、ファイナライズは__gc?

それ以外の場合は、メタテーブルを繰り返し処理して、luabind が何をしているかを調べてみてください。for k , v in getmetatable(myobject) do print(k,v) end

于 2010-06-19T20:30:20.283 に答える