lua - 检测 Lua 中嵌套表的所有更改
问题描述
假设我有一个这样的嵌套表:
local a = {
b = {
c = {
d = 'e'
}
},
f = {
g = {
h = {
i = 'j'
}
}
}
}
(忽略变量名,它们只是占位符)
所以我想知道的是,每次修改该表或其任何子表时,我如何触发一个函数。例如,如果我这样做a = { 'something' }
或如果我这样做a.b = { 'something' }
或如果我这样做a.b.c = { 'something' }
等等。在使用__newindex
代理表的元表中使用元方法我只能在第二种情况下触发该函数。(例如:当我这样做时a.b = { 'something' }
)
有没有办法在每次修改嵌套表的任何元素时触发它?我需要它的原因是因为表需要缓存某些值的索引,所以当一个值改变时,我需要重新缓存表。
感谢您的帮助。提前致谢。
解决方案
如果要监视嵌套表中的分配,每个表都需要一个 __newindex 元方法。
推荐阅读
- java - JAva 找不到符号异常处理
- reactjs - React Hooks 在设置状态的同时处理多个动作的方式是什么?
- javascript - React formik 与 React-select 将多个选择数组转换为字符串
- discord - 如何发送随机消息?
- python - 部署到 Heroku 时如何在 Flask 应用程序中加载静态文件?
- python - python 2和3中简单数学的不同结果
- javascript - 从对象数组中动态删除项目
- javascript - 将变量从 python 文件发送到 javascript,然后发送到单独的 HTML 文件?
- chrome-remote-desktop - Chrome 远程桌面未安装
- java - 为什么当我在我的 ArrayList 上输入确切的名称时,“包含”方法返回 false?