Lua Доступ к ключам и значениям таблицы

Я хотел бы прочитать файл Lua в редакторе уровней, чтобы я мог отображать его данные в визуальном формате для редактирования пользователями.

Если у меня есть таблица Lua, например, так:

properties = {
Speed = 10,
TurnSpeed = 5
}

Speed очевидно, ключ и 10 Значение. Я знаю, что могу получить доступ к значению, если знаю такой ключ (при условии, что таблица уже находится в стеке):

lua_pushstring(L, "Speed");
lua_gettable(L, idx);
int Speed = lua_tointeger(L, -1);
lua_pop(L, 1);

То, что я хочу сделать, это получить доступ к имени ключа и соответствующему значению в C ++. Можно ли это сделать? Если да, то как мне это сделать?

2

Решение

Это покрыто lua_next функция, который перебирает элементы таблицы:

// table is in the stack at index 't'
lua_pushnil(L);  // first key
while (lua_next(L, t) != 0)
{
// uses 'key' (at index -2) and 'value' (at index -1)
printf("%s - %s\n", luaL_typename(L, -2), luaL_typename(L, -1));
// removes 'value'; keeps 'key' for next iteration
lua_pop(L, 1);
}

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

Очевидно, что добавление или удаление элементов в таблице, по которой вы выполняете итерацию, может вызвать проблемы.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]