题
我有一个LUA函数,该函数返回表(包含一组字符串),使用此代码正常运行良好:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
该功能返回表。如何阅读C ++代码中的内容?
解决方案
如果您要问如何穿越最终的表格,您需要 lua_next (该链接还包含一个示例)。作为 埃加西亚 说,如果 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)
不隶属于 StackOverflow