【发布时间】:2020-06-01 18:44:33
【问题描述】:
我想从 lua 调用 c 函数来更改 C 中定义的变量,但我不希望 lua“用户”意识到它们是函数。
例如,考虑在 c 中创建的整数和数组:
int c_level = 0;
int c_map[4] = {0,0,0,0};
现在程序创建一个 Lua 状态并运行:
set_level(2) --c_level = 2
set_tile(1,23) --c_map[0] = 23
我希望它们在 lua 脚本中看起来像这样:
L_level = 2
L_map[1] = 23
因此,L_level 和 L_map 将是 C 中定义的函数。
L_level 的参数是“2”。
L_map 的参数是“1”和“23”。
这可能吗?
我可以使用 getglobal 获取 lua 变量,但我想知道是否可以创建一些看起来像我展示的那些 lua 函数。
谢谢。
【问题讨论】:
-
您可以使用轻量级用户数据、
__index和__newindex元方法来完成此操作。