4

我有一个 Lua 函数,它返回表(包含一组字符串),该函数使用以下代码运行良好:

lua_pushstring (lua, "funcname");  
lua_gettable   (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);

该函数返回一个表。如何从我的 C++ 代码中读取它的内容?

4

2 回答 2

5

如果您询问如何遍历结果表,则需要lua_next(该链接还包含一个示例)。正如egarcia所说,如果lua_pcall返回0,则可以在堆栈顶部找到函数返回的表。

于 2010-10-19T17:37:58.527 回答
1

如果函数没有抛出任何错误,那么 lua_pcall 将:

  1. 从堆栈中删除参数
  2. 将结果压入堆栈

这意味着,如果你的函数没有抛出任何错误,你可以立即使用 lua_setfield -lua_pcall就像lua_call一样工作:

lua_pushstring (lua, "funcname");  
lua_gettable   (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
lua_setfield(L, LUA_GLOBALSINDEX, "a");        /* set global 'a' */

相当于:

a = funcname(someparam)
于 2010-10-19T15:52:50.117 回答