有没有办法知道在lua中是否添加了一个键或从数组中删除了一个键? localt={} 本地mt=可设置元表({ --一些元方法可以知道何时添加或丢失密钥并打印消息 },t)

有没有办法知道在lua中是否添加了一个键或从数组中删除了一个键? localt={} 本地mt=可设置元表({ --一些元方法可以知道何时添加或丢失密钥并打印消息 },t),lua,metatable,meta-method,Lua,Metatable,Meta Method,有没有办法做到这一点。我和某人讨论过这个问题,他们说我不能只使用元方法,还可以使用代理。我对如何使这项工作成功感到有点困惑。有人能帮忙吗 谢谢 选项卡[1]=“此” tab[#tab+1]=“那” tab.the='other' 选项卡[3]=nil tab[4]=2要跟踪lua中的表键,元表中有两个最重要的键:\uuu index和\uu newindex \uuuu newindex用于在未找到新键的情况下在表中创建新键\u索引用于在表中没有此类键时获取值 使用\uuuu newindex可

有没有办法做到这一点。我和某人讨论过这个问题,他们说我不能只使用元方法,还可以使用代理。我对如何使这项工作成功感到有点困惑。有人能帮忙吗

谢谢

选项卡[1]=“此”

tab[#tab+1]=“那”

tab.the='other'

选项卡[3]=nil


tab[4]=2

要跟踪lua中的表键,元表中有两个最重要的键:
\uuu index
\uu newindex

\uuuu newindex
用于在未找到新键的情况下在表中创建新键<代码>\u索引用于在表中没有此类键时获取值

使用
\uuuu newindex
可以跟踪创建,但不能跟踪分配,因此无法跟踪关键点删除:


局部t={}
可设置元(t{
__newindex=函数(self、key、value)
打印('Added Key:'…Key,'Value:'…Value)
rawset(自身、键、值)
结束
})
t、 test='test'
t、 test=nil——删除未跟踪
t、 test='test2'

谢谢!!成功了!!我在这方面做了很长时间。是的,我知道前提,只是从-,他们在值周围有不必要的引号。同样的道理。这只适用于插入,而不适用于删除。
local tab = {}
local meta = {}

setmetatable( tab,
    {  __newindex = function( self, key, value )
          print( key, value )
          rawset( self,  key,  value  )
       end
    } )