是否可以在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函数的属性?我可以将metatable中的__index
和__newindex
映射到自定义函数,但我想知道是否有更简单的方法。最终,我想要没有metatables的以下语法:
MyObject.CValue = 1
print(MyObject.CValue)
没有__index
和__newindex
这是否可行?
答案 0 :(得分:3)
没有metatables?不,Metamethods是调用函数来评估tbl.foo
的唯一方法。您可以将MyObject
设为用户数据,但您需要使用metatable来提供__index
元方法。
学会爱metatables。它们是C / Lua集成的支柱。