从Lua C函数返回多个参数。

我想从 C 函数中在 Lua 中获取多个参数。我尝试将几个参数推送到 Lua 栈上:

static int myFunc(lua_State *state)
{
    lua_pushnumber(state, 1);
    lua_pushnumber(state, 2);
    lua_pushnumber(state, 3);

    return 1;
}

然后在 Lua 中这样调用:

local a,b,c = myFunc()

不幸的是,b 和 c 的值是 nil。我不想为我需要的每个值编写一个函数,而是要利用 Lua 从函数中检索多个参数的能力。

点赞
用户752976
用户752976

C 函数的返回值是返回值的数量。

将其改为 return 3; 即可。

这里是《Lua 程序设计》的参考代码:

static int l_sin (lua_State *L) {
  double d = lua_tonumber(L, 1);  /* 获取第一个参数 */
  lua_pushnumber(L, sin(d));  /* 将结果压入栈 */
  return 1;  /* 返回值数量为 1 */
}
2013-10-23 14:32:17