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