检测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元方法。

最新更新