Как узнать количество возвращаемых значений функции Lua из C? - PullRequest
14 голосов
/ 22 июня 2011
luaL_loadstring(L, "return 3, 4, 5");
int R       =   lua_pcall(L, 0, 3, 0);

Lua может возвращать несколько значений. Но в настоящее время мне приходится жестко задавать количество возвращаемых значений. Могу ли я узнать количество во время выполнения динамически?

1 Ответ

18 голосов
/ 22 июня 2011

Да.

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, чтобы определить вершину стека до и после вызова.

...