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'} 时)

有没有一种方法可以在修改嵌套表的任何元素时都触发它?我需要这样做的原因是表需要缓存某些值的索引,因此当值更改时,我需要重新缓存表。

感谢您的帮助。提前致谢。

原文链接 https://stackoverflow.com/questions/69248875

点赞
stackoverflow用户2858170
stackoverflow用户2858170

如果你想要监控嵌套表中的赋值操作,每个表都需要拥有一个 __newindex 元方法。

2021-09-20 06:36:48