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

标签 c lua metatable lua-api

是否可以将函数作为 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/

相关文章:

c - 有效地检查字谜?

c - 如何在保留(非)字母数字属性的同时将多字节 UTF-8 字符表示转换为一个字节?

c++ - 主函数之外的 lual_newstate

java - 如何使用Redis aeCreateTimeEvent?

inheritance - Lua元表__index定位的区别

c++ - 在 lua 中有没有办法将 upvalue 绑定(bind)到 userdata 值而不是函数?

arrays - Lua如何从表中获取数据

objective-c - 使按钮暂停并播放声音代码错误

c++ - c 结构不允许静态成员,而 c++ 允许

c++ - 如何使用 C++ 在 LUA 中编写具有对话和菜单的交互式 NPC 脚本?