Lua C API - 将属性映射到函数

在 Lua 中将函数作为属性推送是可能的吗?

目前,我可以通过将它们作为字段推送来获取/设置函数,如下所示:

lua_pushcfunction(L,L_Getter);
lua_setfield(L, -2, "GetValue");

lua_pushcfunction(L,L_Setter);
lua_setfield(L, -2, "SetValue");

然后在 Lua 中像这样调用它们:

MyObject:SetValue("NewValue")

在没有元表的情况下,能否推送映射到 C 函数的属性?我可以将元表中的 __index__newindex 映射到自定义函数,但我想知道是否有更简单的方法。最终,我希望在没有元表的情况下使用以下语法:

MyObject.CValue = 1
print(MyObject.CValue)

在没有 __index__newindex 的情况下是否有可能实现这一点?

点赞
用户787480
用户787480

没有元表吗?不行。元方法是调用函数来评估 tbl.foo 的唯一方法。你可以将 MyObject 设为用户数据,但同样需要元表来提供 __index 元方法。

学会爱元表。它们是C/Lua集成的骨干。

2013-10-10 21:29:00