【发布时间】:2017-08-14 10:19:46
【问题描述】:
我尝试了这个,但失败了。 __newindex 仅在未设置键时触发。
setmetatable(_G, {
__newindex = function (table, key, value)
print("key: ", key, "value: ", value)
rawset(table, key, value)
if key == "Config" then
print("value: ", value)
if value == nil then
error(debug.traceback())
end
end
end})
【问题讨论】:
-
你需要为全局表设置一个代理表,也就是 Lua 5.2+ 中的
_ENV。 -
你能提供更多细节吗?
-
设置代理意味着只使用专用表来捕获写/读事件。实际数据应存储在其他表中。这样你总是会触发 __newindex。如何准确地做到这一点 - 取决于您的需求,因为有很多组织数据的方法。
-
谢谢,我明白了。