Как переопределить метод __finalize класса luabind? - PullRequest
0 голосов
/ 18 июня 2010

Как переопределить класс luabind __ finalize method?

Попытка сделать это таким образом:

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 Ответ

1 голос
/ 20 июня 2010

Просто предположение, но завершается ли переход к __gc?

В противном случае попробуйте перебрать метатаблицу, чтобы попытаться выяснить, что делает luabind: for k , v in getmetatable(myobject) do print(k,v) end

...