【发布时间】:2011-03-05 04:15:34
【问题描述】:
如何重写 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。也没用。
如何覆盖它?提前致谢。
【问题讨论】:
标签: class scripting lua luabind