Как прочитать Lua возвращаемое значение таблицы из C ++ - PullRequest
4 голосов
/ 19 октября 2010

У меня есть функция Lua, которая возвращает таблицу (содержит набор строк), функция работает нормально, используя этот код:

lua_pushstring (lua, "funcname");  
lua_gettable   (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);

функция возвращает таблицу.Как мне прочитать его содержимое из моего кода C ++?

Ответы [ 2 ]

6 голосов
/ 19 октября 2010

Если вы спрашиваете, как просмотреть получившуюся таблицу, вам нужно lua_next (ссылка также содержит пример).Как сказал egarcia , если lua_pcall возвращает 0, то таблица, которую возвращает функция, может быть найдена на вершине стека.

1 голос
/ 19 октября 2010

Если функция не выдает никаких ошибок, 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)
...