我可以检测到一个值刚刚分配给Lua中的表的时刻吗?

我可以检测到一个值刚刚分配给Lua中的表的时刻吗?,第1张

概述我创建了一个由Lua解释器 *** 作的交互式命令 shell.用户输入一些命令, shell调用类似lua_dostring的命令来执行它.我想允许用户在任意表中定义自己的函数,并自动将其保存到单独的存储(如文件)中.根据手册,我可以通过lua_Debug获得用户输入的确切源代码. 完成所有执行后,可以将函数源保存到某些文件中.但我想在添加/删除时自动保存. 我可以检测到某个值刚刚添加到表中的时刻吗? 我创建了一个由Lua解释器 *** 作的交互式命令 shell.用户输入一些命令,shell调用类似lua_dostring的命令来执行它.我想允许用户在任意表中定义自己的函数,并自动将其保存到单独的存储(如文件)中.根据手册,我可以通过lua_DeBUG获得用户输入的确切源代码.

完成所有执行后,可以将函数源保存到某些文件中.但我想在添加/删除时自动保存.

我可以检测到某个值刚刚添加到表中的时刻吗?

解决方法 是.如果你有一个表tbl,每次发生这种情况:

tbl[key] = value

调用tbls Metatable上的Metamethod __newindex.所以你需要做的是给tbl一个Metatable并设置它的__newindex元方法来捕获输入.像这样的东西:

local captureMeta = {}function captureMeta.__newindex(table,key,value)    rawset(table,value)    --do what you need to with "value"endsetMetatable(tbl,captureMeta);

当然,您必须找到一种在感兴趣的表上设置元表的方法.

总结

以上是内存溢出为你收集整理的我可以检测到一个值刚刚分配给Lua中的表的时刻吗?全部内容,希望文章能够帮你解决我可以检测到一个值刚刚分配给Lua中的表的时刻吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1219639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存