在 Lua 5.x 中,Lua 4.0 中的 "gettable" 和 "settable" 事件用于设置标签方法(比如元方法)是什么?

在 lua 4.0 中,标签方法 "gettable" 允许拦截对表元素的访问。 每次尝试访问表元素时,都会调用链接的 "gettable" 事件的标记方法:

local t = { a=123 }
local tg = newtag()
settagmethod(tg, "gettable",
  function(tbl, idx) print(tbl, idx) return rawget(tbl, idx) end )
settag(t, tg)
print(t.a)    -- <-- 打印表:0x7f9a8250acc0   a
              -- <-- 然后打印 t.a 的值

Lua 5.xx 中相当于什么?

我的代码如何在 Lua 5.x 中每次访问表时调用方法?

点赞