是否可以从C向Lua中的表添加元方法?

是否可以从C向Lua中的表添加元方法?,lua,Lua,我在C中有一个字符串数组,可以传递给Lua。在Lua端,我调用表。插入向其中添加元素。但是我需要把桌子放回C面 我知道我可以向Lua公开一个C函数来实现这一点。但我不希望程序员必须记住这样做 相反,我想知道是否有一种方法可以将元方法(如\uu newindex)添加到表中,这样我就可以“看到”元素何时添加到Lua表中,并在C端自动捕获它们?当您真正想要的是直接访问原始数组时,您正在制作C数组的副本。该字符串数组应仅存储在C或Lua中,然后使另一端可见 要将其存储在C中,请创建一个指向该数组的元表

我在C中有一个字符串数组,可以传递给Lua。在Lua端,我调用
表。插入
向其中添加元素。但是我需要把桌子放回C面

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


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

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

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


要将其存储为Lua表,只需将其设置为表并使用and访问即可。

您正在制作C数组的副本,而实际需要的是直接访问原始数组。该字符串数组应仅存储在C或Lua中,然后使另一端可见

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


要将其存储为Lua表,只需将其设置为表并使用and访问即可。

您是在询问如何在给定方法的情况下,将其设置为表上的
\uu newindex
元方法,还是如何编写C方法来处理添加新元素的问题?我想在编写本文之后,我意识到我刚才提出了一个问题,我在问我是否可以向一个表中添加_unewindex,我们可以,而且我知道怎么做。我真正想要的是一种将字符串数组从C推送到Lua,然后在有人向Lua中的表追加字符串时在C中得到通知的方法。我想我需要使用_unewindex来实现这一点。天哪,我希望这是内置的。我发现自己为Lua编写了这么多毛茸茸的C-API代码,因为这东西太多了——不包括在内。你只关心添加新元素,还是更新现有元素?@010110101:不清楚“字符串数组”是一个合适的Lua表还是一些C数据结构。你是在问如何,给定一个方法,将其设置为表上的
\uuuuNewIndex
元方法,或者如何编写C方法来处理添加新元素的操作?我想在写了这篇文章之后,我意识到我刚刚提出了一个问题,我想问我是否可以向表中添加\uuNewIndex,我们可以,而且我知道如何。我真正想要的是一种将字符串数组从C推送到Lua,然后在有人向Lua中的表追加字符串时在C中得到通知的方法。我想我需要使用_unewindex来实现这一点。天哪,我希望这是内置的。我发现我自己为Lua编写了这么多毛茸茸的C-API代码,因为这东西太少了。你只关心添加新元素,还是更新现有元素?@010110101:“字符串数组”是正确的Lua表还是某种C数据结构还不清楚。