有没有办法知道在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
} )