Как прочитать значение возврата таблицы LUA от C ++
Вопрос
У меня есть функция LUA, которая возвращает таблицу (содержит набор строк). Функция работает нормально, используя этот код:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
Функция возвращает таблицу. Как прочитать его содержимое от моего C ++?
Решение
Если вы задаете, как пройти полученную таблицу, вам нужно lua_next. (Ссылка также содержит пример). В виде Egarcia сказал, если 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