gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:21:50 24 4
gpt4 key购买 nike

我制作了一个由 Lua 解释器操作的交互式命令 shell 。用户输入一些命令,shell 调用类似 lua_dostring 的东西执行它。我想让用户在任意表中定义自己的函数,并自动将其保存到单独的存储(如文件)中。根据手册,我可以通过 lua_Debug 获得用户输入的准确源代码。 .

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

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

最佳答案

是的。如果您有 table tbl ,每次发生这种情况时:

tbl[key] = value

元方法 __newindextbl s 元表被调用。所以你需要做的就是给 tbl一个元表并将其设置为 __newindex捕获输入的元方法。像这样的东西:
local captureMeta = {}
function captureMeta.__newindex(table, key, value)
rawset(table, key, value)
--do what you need to with "value"
end

setmetatable(tbl, captureMeta);

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

关于lua - 我可以检测到值刚刚分配给 Lua 中的表的时刻吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com