是否可以将函数作为 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)
如果没有__index
和__newindex
,这可能吗?
最佳答案
没有元表?不。元方法是调用函数来计算 tbl.foo 的唯一方法。您可以将 MyObject
设为用户数据,但同样需要一个元表来提供 __index
元方法。
学会热爱元表。它们是 C/Lua 集成的支柱。
关于c - Lua C API - 将属性映射到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19306236/