【问题标题】:Get table as auto argument when calling C function from the same table field从同一表字段调用 C 函数时获取表作为自动参数
【发布时间】: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 很陌生

标签: c lua lua-table lua-api


【解决方案1】:

像这样调用你的 hi 函数:

A0:hi()

这相当于:

A0.hi(A0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多