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