2

是否可以将函数作为 Lua 中的属性推送?

现在,我可以通过将它们作为字段推送来拥有 Get/Set 函数,如下所示:

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)

这可能没有__indexand__newindex吗?

4

1 回答 1

3

没有元表?不,元方法是调用函数进行评估的唯一方法tbl.foo。您可以创建MyObject一个用户数据,但同样您需要一个元表来提供元__index方法。

学会喜欢元表。它们是 C/Lua 集成的支柱。

于 2013-10-10T21:29:00.833 回答