lua - 是否可以从 C 向 Lua 中的表添加元方法?
问题描述
我在 C 中有这个字符串数组,可以传递给 Lua。在 Lua 方面,然后我调用table.insert
向它添加元素。但随后我需要在 C 端重新获得该表。
我知道我可以向 Lua 公开一个 C 函数来做到这一点。但我不希望程序员必须记住这样做。
相反,我想知道是否有一种方法可以将元方法(如__newindex
)添加到表中,以便我可以“看到”何时将元素添加到 Lua 表并在 C 端自动捕获它们?
解决方案
当您真正想要的是直接访问原始数组时,您正在制作 C 数组的副本。这个字符串数组应该只存储在 C 或 Lua 中,然后对另一方可见。
要将其存储在 C 中,请创建一个指向数组的userdata并具有一个元表,其__index是一个允许 Lua 访问和操作它的 C 函数。您可以将用户数据存储为全局数据,也可以让 Lua 调用创建它的函数。
要将其存储为 Lua 表,只需将其设为表并使用lua_getglobal和lua_setglobal访问它。
推荐阅读
- html - 如何通过双击 HTML 表格行导航到另一个页面?
- javascript - 你如何使用从 HtDP 到 ReactJS 的知识?
- excel - 如何使用用户表单分别编辑具有不同行和列的单元格中的数据
- javascript - 在不切换的情况下将新 iframe 加载到 javascript 中折叠
- react-native - 在 Atom 中注释掉代码会给我一个错误
- scala - 如果 trait 的 val 在课堂上被覆盖,为什么还要评估它?
- excel - VBA 如何以编程方式使用条件格式并将其仅应用于数字
- c++11 - std::set::erase 正在推进反向迭代器
- flutter - 在颤振中保存购物车数据的更好方法是什么?
- typescript - Typescript:如何在输出目录中包含导入的图像?