从同一 table 字段调用 C 函数时获取 table 作为自动参数
Get table as auto argument when calling C function from the same table field
我有几个全局整型变量,比如 Lua 脚本中的 A0、A1、A2。它们在 C 端声明。它们每个都包含唯一的数值。
在脚本中,用户使用此别名操作设备引脚:
set_pin_bool(A0, 1)
并且调用对应的C函数。我觉得它太像C了,不太好用。更好的方法是调用 A0.hi()、A0.low()、A0.set(1) 等方法
所以我试图在 C 中将 A0 和其他人声明为 tables(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 端我将无法访问一个 table 它被调用以获取另一个字段。当我用谷歌搜索时,无法从 C 中获得类似 self 的东西。有什么办法可以实现吗?我不想将 table 本身作为参数传递,例如 A0.hi(A0)
别名可能有很多,可以起不同的名字。
或者可能有不同的方法来实现同一目标?
像这样调用您的 hi
函数:
A0:hi()
这相当于:
A0.hi(A0)
我有几个全局整型变量,比如 Lua 脚本中的 A0、A1、A2。它们在 C 端声明。它们每个都包含唯一的数值。
在脚本中,用户使用此别名操作设备引脚:
set_pin_bool(A0, 1)
并且调用对应的C函数。我觉得它太像C了,不太好用。更好的方法是调用 A0.hi()、A0.low()、A0.set(1) 等方法
所以我试图在 C 中将 A0 和其他人声明为 tables(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 端我将无法访问一个 table 它被调用以获取另一个字段。当我用谷歌搜索时,无法从 C 中获得类似 self 的东西。有什么办法可以实现吗?我不想将 table 本身作为参数传递,例如 A0.hi(A0)
别名可能有很多,可以起不同的名字。
或者可能有不同的方法来实现同一目标?
像这样调用您的 hi
函数:
A0:hi()
这相当于:
A0.hi(A0)