我有一个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将:

  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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top