加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 21:45:31 所属栏目:大数据 来源:网络整理
导读:我创建了一个由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"
end

setmetatable(tbl,captureMeta);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读