【发布时间】:2017-02-22 17:47:43
【问题描述】:
我正在寻找一种在从 lua 表中删除元素时触发的元方法(或解决方法),类似于 __newindex 元方法。
理想情况下,它会像下面这样工作:
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 元方法,但由于元方法仅在垃圾回收周期发生时触发,因此在此实现中不可用。我无法控制垃圾收集,因为表(带有元方法)被传递给不同的脚本。
【问题讨论】:
标签: lua