Как прочитать значение возврата таблицы LUA от C ++

StackOverflow https://stackoverflow.com/questions/3970021

  •  09-10-2019
  •  | 
  •  

Вопрос

У меня есть функция 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 будет:

  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