Объявление и доступ к отображениям
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 16 из 80.
Объявление типизированной map выглядит так же, как конструкторы таблиц, которые вы всегда писали: аннотация лишь задаёт типы ключей и значений:
local stock: {[string]: number} = {apples = 12, bananas = 5}Чтение и запись выполняются с помощью индексации, знакомой вам. Для ключей, являющихся допустимыми идентификаторами, stock.apples и stock["apples"] обращаются к одной и той же записи; запись в квадратных скобках также подходит для ключей с пробелами или ключей, хранящихся в переменных:
stock["cherries"] = 20 -- добавить новую запись
stock.bananas = 8 -- обновить существующую запись
print(stock["apples"]) -- 12
print(stock["plums"]) -- nil: значение никогда не задавалосьПроверка типов отслеживает каждую запись: stock["apples"] = "many" отмечается как ошибка, потому что "many" — не число, а использование числа в качестве ключа тоже отмечается как ошибка, поскольку ключи должны быть строками.
Чтобы удалить запись, присвойте её ключу значение nil: stock["bananas"] = nil полностью удаляет её, а при последующих чтениях возвращается nil. Отдельной функции удаления нет; это стандартный идиоматический способ в Lua, и он по-прежнему проходит проверку типов для map.
Задание
ЛегкоВеди типизированную таблицу школьных принадлежностей.
- Объяви
local stock: {[string]: number} = {pens = 40, rulers = 15}. - Добавь
stock["erasers"] = 25и измениrulersна10. - Выведи количество
pens,rulers,erasersиglue, по одному в каждой строке.
Нажми Выполнить код: в выводе появятся 40, 10, 25 и nil.
Попробуйте сами
-- 1) объяви stock: {[string]: number} с pens = 40, rulers = 15
-- 2) добавь erasers = 25, измени rulers на 10
-- 3) выведи pens, rulers, erasers, затем glue
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции без возвращаемого значенияНеобязательные параметрыЗначения параметров по умолчаниюЗначения по умолчанию для булевых параметровФункции с переменным числом аргументовОпределение типов функцийПовторение: типизированные функции2Основные типы
Число, строка и булево значениеТип 'any': запасной выходТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовПовторение: практика с основными типами5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: массивы и отображения
Типизированные массивыДобавление и чтение элементовЧто такое тип отображения?Объявление и доступ к отображениямПеребор таблицТаблицы смешанной структурыЧтение сеткиСоздание сеткиtable.unpackПовторение: массивы и отображенияПотренируйтесь самостоятельно: Онлайн-компилятор Luau