在 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) -- <-- prints table: 0x7f9a8250acc0 a
-- <-- then prints t.a value
Lua 5.xx 中的等价物是什么?
每次在 Lua 5.x 中访问表时,我的代码如何调用方法?