【发布时间】:2011-06-22 11:40:12
【问题描述】:
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, 3, 0);
Lua 可以返回多个值。但目前我必须硬编码返回值的计数。我可以动态知道运行时的计数吗?
【问题讨论】:
标签: dynamic count lua runtime return-value
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, 3, 0);
Lua 可以返回多个值。但目前我必须硬编码返回值的计数。我可以动态知道运行时的计数吗?
【问题讨论】:
标签: dynamic count lua runtime return-value
是的。
int top = lua_gettop(L);
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, LUA_MULTRET, 0);
int nresults = lua_gettop(L) - top;
您使用LUA_MULTRET,然后使用lua_gettop 找出调用前后的栈顶。
【讨论】:
luaL_loadstring 将函数推入堆栈,如果该函数已经存在(如在我的情况下)nresults 将需要 +1,否则您最终会得到错误数量的结果(如我的情况......)。