Как создать таблицу lua из строки? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть функция ac, используемая для возврата таблицы в lua, но таблица создается из строки, а не lua_newtable, как это сделать?

int GetTable(lua_State* L)
{
    //this string is generated at runtime, so i can not use lua_newtable
    const char* TableFromStr = "{a = 123, b = 456, d = {x = 1, y = 9} }";
    //i want to push the table to the top stack
    luaL_loadstring(L, TableFromStr);
    //return 1 table, lua code can get the table
    return 1;
}

1 Ответ

0 голосов
/ 30 мая 2018

Вы должны использовать luaL_dostring

https://www.lua.org/manual/5.1/manual.html#luaL_dostring

Если вы используете Lua 5.1, убедитесь, что luaL_dostring правильно определено.См. http://lua -users.org / lists / lua-l / 2006-04 / msg00218.html

В Lua 5.1 luaL_dostring определяется как luaL_loadstring(L, s) || lua_pcall(L, 0, 0, 0)

и поэтому игнорирует возвраты.

Попробуйте это:

#undef luaL_dostring
#define luaL_dostring(L,s)    \   (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))

Возможно, вам также придется добавить в строку return

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...