如何从C++读取Lua表返回值
我有一个返回表的 Lua 函数(包含一组字符串) 使用以下代码该函数运行良好:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
该函数返回一个表。如何从我的 C++ 代码中读取它的内容?
I have a Lua function that returns table (contains set of strings)
the function run fine using this code:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
the function returns a table. How do I read it's contents from my C++ code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您询问如何遍历结果表,则需要 lua_next (该链接还包含例子)。正如egarcia所说,如果
lua_pcall
返回0,则可以在堆栈顶部找到函数返回的表。If you are asking how to traverse the resulting table, you need lua_next (the link also contains an example). As egarcia said, if
lua_pcall
returns 0, the table the function returned can be found on top of the stack.如果函数没有抛出任何错误,那么 lua_pcall 将:
这意味着,如果您的函数没有抛出任何错误,您可以立即使用 lua_setfield -
lua_pcall
将像 lua_call 一样工作:将是等效的的:
If the function doesn't throw any errors, then lua_pcall will:
This means that, if your function doesn't throw any errors, you can use lua_setfield right away -
lua_pcall
will work just like lua_call:would be the equivalent of: