Я ищу метамод (или обходной путь), который срабатывает при удалении элемента из таблицы lua, аналогичного метатету __newindex
.Lua metamethod, который срабатывает при удалении элемента из таблицы
В идеале это будет работать что-то вроде следующего:
local mytable = {}
local mt = {
__newindex = function(t,k,v)
rawset(t,k,v)
-- some other functionality
end,
-- This does not exist
__remove = function(t,k)
--some functionality
end
}
setmetatable(mytable,mt)
-- __newindex fires
mytable["key"] = value
-- __remove fires
mytable["key"] = nil
Я попытался работать с __gc
Метаметод но не может использоваться в этой реализации из-за того, что Метаметод только срабатывает, когда сбор мусора цикла случается. У меня нет контроля над сборкой мусора, потому что таблица (с метаметодами) передается другому сценарию.
Спасибо. Это решает мою проблему. – Frik