Объявление и доступ к Map-словарям
Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 16 из 73.
Объявление typed map выглядит как конструкторы таблиц, которые вы всегда писали — аннотация просто фиксирует типы key и значений:
local stock: {[string]: number} = {apples = 12, bananas = 5}Чтение и запись используют привычную вам индексацию. Для keys, являющихся допустимыми идентификаторами, stock.apples и stock["apples"] получают доступ к одному и тому же entry; форма со скобками также позволяет работать с keys с пробелами или сохранёнными в переменных:
stock["cherries"] = 20 -- добавить новую запись
stock.bananas = 8 -- обновить существующую
print(stock["apples"]) -- 12
print(stock["plums"]) -- nil — никогда не задавалосьСредство проверки типов отслеживает каждую запись: stock["apples"] = "many" отмечается ошибкой, потому что "many" не является number, а использование number в качестве key отмечается ошибкой, так как keys должны быть string.
Чтобы удалить entry, присвойте nil его key — stock["bananas"] = nil removes его entirely, и последующие чтения вернут nil. Отдельной функции удаления нет; это стандартная идиома Lua, и она корректно проходит проверку типов для map.
Задание
ЛегкоСоздайте typed map stock: {[string]: number}, инициализированную с apples = 12 и bananas = 5. Затем:
- добавьте новую
entrycherriesсо значением20 - обновите (
update)bananasдо8
В завершение выведите на печать (print), каждый параметр с новой строки:
- запас
apples - запас
bananas - запас
cherries - запас
plums—key, который выneverне устанавливали
Попробуйте сами
-- Напишите код здесь
-- 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-словари