我有一个 Lua 函数,它返回表(包含一组字符串),该函数使用以下代码运行良好:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
该函数返回一个表。如何从我的 C++ 代码中读取它的内容?
如果您询问如何遍历结果表,则需要lua_next(该链接还包含一个示例)。正如egarcia所说,如果lua_pcall
返回0,则可以在堆栈顶部找到函数返回的表。
如果函数没有抛出任何错误,那么 lua_pcall 将:
这意味着,如果你的函数没有抛出任何错误,你可以立即使用 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)