Перебор таблиц
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 17 из 80.
Ты уже много раз проходил циклом по таблицам 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 и используй их для обращения к словарю.
Задание
ЛегкоВыведите температуры за неделю и их сумму.
- Объявите
local temps: {number} = {12, 15, 11, 14}иlocal total = 0. - Выполните цикл с
for day: number, temp: number in ipairs(temps) do, выведите`Day {day}: {temp}`и прибавьтеtempкtotal. - После цикла выведите
total.
Нажмите «Запустить код»: вывод покажет значения от Day 1: 12 до Day 4: 14, а затем 52.
Попробуйте сами
-- 1) объявить temps: {number} и total = 0
-- 2) пройти циклом по типизированным day и temp, вывести каждый day, прибавить к total
-- 3) вывести total
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции без возвращаемого значенияНеобязательные параметрыЗначения параметров по умолчаниюЗначения по умолчанию для булевых параметровФункции с переменным числом аргументовОпределение типов функцийПовторение: типизированные функции2Основные типы
Число, строка и булево значениеТип 'any': запасной выходТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовПовторение: практика с основными типами5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: массивы и отображения
Типизированные массивыДобавление и чтение элементовЧто такое тип отображения?Объявление и доступ к отображениямПеребор таблицТаблицы смешанной структурыЧтение сеткиСоздание сеткиtable.unpackПовторение: массивы и отображенияПотренируйтесь самостоятельно: Онлайн-компилятор Luau