检测 Lua 中嵌套 table 的所有更改
Detect all changes to a nested table in Lua
假设我有一个像这样的嵌套 table:
local a = {
b = {
c = {
d = 'e'
}
},
f = {
g = {
h = {
i = 'j'
}
}
}
}
(忽略变量名,它们只是占位符)
所以我想知道的是,每次修改 table 或其任何子 table 时如何触发函数。例如,如果我做 a = { 'something' }
或者我做 a.b = { 'something' }
或者我做 a.b.c = { 'something' }
等等。在使用代理 table 的元 table 中使用 __newindex
元方法,我只能在第二种情况下触发该函数。 (例如:当我做 a.b = { 'something' }
)
有没有办法在每次修改嵌套 table 的任何元素时触发它?我需要它的原因是因为 table 需要缓存某些值的索引,所以当一个值改变时,我需要重新缓存 table.
感谢您的帮助。提前致谢。
如果要监视嵌套 table 中的分配,每个 table 需要一个 __newindex 元方法。
假设我有一个像这样的嵌套 table:
local a = {
b = {
c = {
d = 'e'
}
},
f = {
g = {
h = {
i = 'j'
}
}
}
}
(忽略变量名,它们只是占位符)
所以我想知道的是,每次修改 table 或其任何子 table 时如何触发函数。例如,如果我做 a = { 'something' }
或者我做 a.b = { 'something' }
或者我做 a.b.c = { 'something' }
等等。在使用代理 table 的元 table 中使用 __newindex
元方法,我只能在第二种情况下触发该函数。 (例如:当我做 a.b = { 'something' }
)
有没有办法在每次修改嵌套 table 的任何元素时触发它?我需要它的原因是因为 table 需要缓存某些值的索引,所以当一个值改变时,我需要重新缓存 table.
感谢您的帮助。提前致谢。
如果要监视嵌套 table 中的分配,每个 table 需要一个 __newindex 元方法。