Lua表中值分配瞬间能否被检测到?
- 内容介绍
- 文章标签
- 相关推荐
本文共计289个文字,预计阅读时间需要2分钟。
我开发了一个由Lua解释器操作的交互式shell命令。用户输入一些命令,shell调用类似lua_dostring的命令来执行它。我想允许用户在任何表达式中定义自己的函数,并将其自动保存到单独的存储(如文件)。
我创建了一个由Lua解释器操作的交互式命令 shell.用户输入一些命令, shell调用类似lua_dostring的命令来执行它.我想允许用户在任意表中定义自己的函数,并自动将其保存到单独的存储(如文件)中.根据手册,我可以通过lua_Debug获得用户输入的确切源代码.完成所有执行后,可以将函数源保存到某些文件中.但我想在添加/删除时自动保存.
我可以检测到某个值刚刚添加到表中的时刻吗?
tbl[key] = value
调用tbls metatable上的metamethod __newindex.所以你需要做的是给tbl一个metatable并设置它的__newindex元方法来捕获输入.像这样的东西:
local captureMeta = {} function captureMeta.__newindex(table, key, value) rawset(table, key, value) --do what you need to with "value" end setmetatable(tbl, captureMeta);
当然,您必须找到一种在感兴趣的表上设置元表的方法.
本文共计289个文字,预计阅读时间需要2分钟。
我开发了一个由Lua解释器操作的交互式shell命令。用户输入一些命令,shell调用类似lua_dostring的命令来执行它。我想允许用户在任何表达式中定义自己的函数,并将其自动保存到单独的存储(如文件)。
我创建了一个由Lua解释器操作的交互式命令 shell.用户输入一些命令, shell调用类似lua_dostring的命令来执行它.我想允许用户在任意表中定义自己的函数,并自动将其保存到单独的存储(如文件)中.根据手册,我可以通过lua_Debug获得用户输入的确切源代码.完成所有执行后,可以将函数源保存到某些文件中.但我想在添加/删除时自动保存.
我可以检测到某个值刚刚添加到表中的时刻吗?
tbl[key] = value
调用tbls metatable上的metamethod __newindex.所以你需要做的是给tbl一个metatable并设置它的__newindex元方法来捕获输入.像这样的东西:
local captureMeta = {} function captureMeta.__newindex(table, key, value) rawset(table, key, value) --do what you need to with "value" end setmetatable(tbl, captureMeta);
当然,您必须找到一种在感兴趣的表上设置元表的方法.

