| Раздел: CronosPRO | Дата редакции: 11.07.2013 | id статьи: 1533 |
Обход элементов таблицы в Lua
Для обхода всех элементов таблицы обычно используют расширенную форму оператора for
совместно со стандартной функцией pairs.
t = { name = "Евгений", surname = "Степанов", age = 12 } for key, val in pairs(t) do MsgBox(key.." : "..val) end
На каждом шаге цикла переменная key получает ключ очередного поля таблицы t,
а переменная val — соответствующее ключу значение поля. Цикл выполняется по всем полям таблицы.
Для обхода массива, то есть таблицы с целочисленными ключами, удобнее использовать другую
стандартную функцию Lua — ipairs.
t = { "Иванов", "Степанов", "Петров" } for i, val in ipairs(t) do MsgBox("№"..i.." : "..val) end
На каждом шаге цикла переменная i получает числовой индекс очередного поля таблицы t, а переменная val
— соответствующее индексу значение поля. Цикл продолжается до первого целого ключа, отсутствующего в таблице.
Примечание
При обходе массива необходимость в получении индекса зачастую отсутствует. В этом случае переменную i можно не вводить, заменив её символом подчеркивания (_).
t = { "Иванов", "Степанов", "Петров" } for _, val in ipairs(t) do MsgBox(val) end
Обойти массив можно и с помощью обычного числового for.
t = { "Иванов", "Степанов", "Петров" } for i = 1, #t do MsgBox("Значение элемента №"..i.." : "..t[i]) end
