首页 > 解决方案 > 是否可以从 C 向 Lua 中的表添加元方法?

问题描述

我在 C 中有这个字符串数组,可以传递给 Lua。在 Lua 方面,然后我调用table.insert向它添加元素。但随后我需要在 C 端重新获得该表。

我知道我可以向 Lua 公开一个 C 函数来做到这一点。但我不希望程序员必须记住这样做。

相反,我想知道是否有一种方法可以将元方法(如__newindex)添加到表中,以便我可以“看到”何时将元素添加到 Lua 表并在 C 端自动捕获它们?

标签: lua

解决方案


当您真正想要的是直接访问原始数组时,您正在制作 C 数组的副本。这个字符串数组应该只存储在 C 或 Lua 中,然后对另一方可见。

要将其存储在 C 中,请创建一个指向数组的userdata并具有一个元表,其__index是一个允许 Lua 访问和操作它的 C 函数。您可以将用户数据存储为全局数据,也可以让 Lua 调用创建它的函数。

要将其存储为 Lua 表,只需将其设为表并使用lua_getgloballua_setglobal访问它。


推荐阅读