如何覆盖 luabind 类的 __finalize 方法?

如何覆盖luabind类的__finalize方法?

尝试以这种方式实现:

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

local original_finalize_function = A.__finalize
A.__finalize = function(...)
  -- 一些自定义逻辑
  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。也没什么帮助。

我该怎么覆盖它?提前感谢。

原文链接 https://stackoverflow.com/questions/3065515

点赞
stackoverflow用户282536
stackoverflow用户282536

猜测finalize 是否只是去 __gc

否则,尝试迭代元表来了解 luabind 正在做什么:for k, v in getmetatable(myobject) do print(k, v) end

2010-06-19 20:30:20