Comment remplacer la classe luabind __finaliser la méthode?Comment remplacer la méthode __finalize de la classe luabind?
Essayer de faire de telle manière:
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')
Mais Lua appelle encore que finaliseur d'origine. Il fonctionne pour la méthode __init cependant:
local original_init_function = A.__init
A.__init = function(...)
if original_init_function then
original_init_function(unpack(arg))
end
end
Aussi j'ai essayé de passer outre getmetatable (A) .__ finilize. Ça n'aide pas trop.
Comment puis-je le remplacer? Merci d'avance.
Je ne sais pas. __finalize est appelée avant __gc. J'ai essayé de passer outre, mais j'ai eu un accident. De la référence de LUA: "__gc ... (peut être réglé du côté C seulement)." * Composable pour la classe: * __index, __newindex, __luabind_classrep (true), __gc, __call. * Composable pour l'objet (instance de classe): * 1, __eq, __mul, __pow, __index, __call, __unm, __concat, __len, __newindex, __lt, __div, __tostring, __luabind_class (vrai), __gc, __le, __sub, __add – kFk