3

我有几个全局整数变量,例如 Lua 脚本中的 A0、A1、A2。它们在 C 端声明。它们中的每一个都包含唯一的数值。
在脚本中,用户使用此别名操作设备引脚:

set_pin_bool(A0, 1) 

这会调用相应的 C 函数。我认为它太像 C 并且不是很方便。更好的是调用 A0.hi()、A0.low()、A0.set(1) 等方法。
所以我尝试将 A0 和其他方法声明为 C 中的表(只是一个结构):

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)
可能有很多别名,它们可以以不同的方式命名。
或者可能有不同的方法来实现相同的目标?

4

1 回答 1

4

像这样调用你的hi函数:

A0:hi()

这相当于:

A0.hi(A0)
于 2015-03-10T12:43:43.437 回答