如何覆盖luabind类__finalize方法?

时间:2010-06-17 20:47:45

标签: class scripting lua luabind

如何覆盖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。也没有帮助。

如何覆盖它?提前谢谢。

1 个答案:

答案 0 :(得分:1)

只是一个猜测,但最终确定只是转到__gc

否则尝试迭代metatable以尝试找出luabind在做什么:for k , v in getmetatable(myobject) do print(k,v) end