Class 如何重写luabind类uu finalize方法?
如何重写luabind类\u finalize方法 试着这样做:Class 如何重写luabind类uu finalize方法?,class,scripting,lua,luabind,Class,Scripting,Lua,Luabind,如何重写luabind类\u 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_finaliz
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仍然只调用原始终结器。它确实适用于uu init方法,但是:
local original_init_function = A.__init
A.__init = function(...)
if original_init_function then
original_init_function(unpack(arg))
end
end
此外,我还尝试覆盖getmetatable(A)。\uu finilize。这也没用
我怎样才能覆盖它?提前谢谢。只是一个猜测,但是否只需转到
\uu gc
否则,请尝试在元表上迭代,以尝试找出luabind正在做什么:
对于getmetatable(myobject)中的k,v,do print(k,v)end
不知道__finalize在_gc之前调用。我试着去控制它,但它崩溃了。来自lua引用:“\uuuu gc…(只能从C端设置)。”类的元表:\uuuu index、\uuuuu newindex、\uuuuuluabind\u classrep(true)、\uuuu gc、\uuu调用。对象的元表(类intstance):1、\uuuuu eq、\uuuu mul、\uuuu pow、\uuuu index、\uuuu调用、\uuuuuunm、\uuuuu concat、\uuuuu len、\uuuuuuuu newindex、\uuuuuuuuuu lt、\uuuuuuuu div、\uuuuuuu tostring、\uuuuu luabind\uu类(true)、\uuuuuuuuu gc、\uuuuuu le、\uuuuu sub、\uu sub、