Menu
Coddy logo textTech

Итерация по таблицам

Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 17 из 73.

Вы уже много раз перебирали таблицы Lua — Luau сохраняет те же самые циклы и добавляет типы к переменным цикла. Для массивов ipairs обходит элементы по порядку, от индекса 1 до #t, и вы можете аннотировать обе переменные:

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

Помните, что ipairs останавливается на первом пропущенном индексе — пропуск со значением nil посередине завершает цикл раньше времени. Это редко бывает проблемой в правильно организованных массивах, но об этом стоит знать.

Для словарей используйте pairs, который обходит каждую пару ключ/значение, включая строковые ключи. В словаре вида {[string]: number} переменными цикла естественно являются string и number:

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

Одно важное предупреждение: pairs обходит ключи хеш-части в негарантированном порядке — он может отличаться при разных запусках. Когда вам нужен детерминированный вывод (отсортированные отчёты, тесты), соберите ключи в массив, отсортируйте его с помощью table.sort, а затем переберите отсортированные ключи с помощью ipairs и обратитесь к словарю по индексу.

challenge icon

Задание

Легко

Создайте типизированный массив temps: {number}, инициализированный значениями 18, 21, 19 и 24.

Переберите его с помощью ipairs, аннотировав обе переменные цикла (day: number, temp: number). Для каждого элемента выведите ровно:

Day 1: 18

(используя интерполяцию строк с обратными кавычками) и прибавляйте каждую температуру к общей сумме.

После цикла выведите общую сумму на отдельной строке.

Попробуйте сами

-- Напишите код здесь
-- 1) объявите temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
--    печатая `Day {day}: {temp}` и суммируя в total
-- 3) выведите total после цикла
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в Luau