【发布时间】:2015-05-11 19:55:37
【问题描述】:
我有几个全局整数变量,例如 Lua 脚本中的 A0、A1、A2。它们在 C 端声明。它们中的每一个都包含唯一的数值。
在脚本中,用户使用此别名操作设备引脚:
set_pin_bool(A0, 1)
这会调用相应的C函数。我认为它太像 C 并且不是很方便。更好的是调用 A0.hi()、A0.low()、A0.set(1) 等方法。
所以我尝试将 A0 和其他人声明为 C 中的表(this 只是一个结构):
lua_newtable(this->luactx);
lua_pushstring(this->luactx, "val");
lua_pushinteger(this->luactx, value);
lua_rawset(this->luactx, -3);
lua_setglobal ( this->luactx, "A0" );
我可以创建一个像 hi 这样的文件并使用 lua_pushcfunction 注册它。但是当我调用 A0.hi() 时,在 C 端我将无法访问调用它的表以获取另一个字段。正如我在谷歌上搜索的那样,没有办法从 C 中获得像 self 这样的东西。有没有办法完成它?我不想将表本身作为参数传递,例如 A0.hi(A0)
可能有很多别名,它们的名称可能不同。
或者可能有不同的方法来实现相同的目标?
【问题讨论】:
-
只做
A0:hi()怎么样? -
那有什么区别呢?对不起,我对 Lua 很陌生