Menu
CoddyTech

Объявление и доступ к отображениям

Часть раздела Введение в 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.

challenge icon

Задание

Легко

Веди типизированную таблицу школьных принадлежностей.

  1. Объяви local stock: {[string]: number} = {pens = 40, rulers = 15}.
  2. Добавь stock["erasers"] = 25 и измени rulers на 10.
  3. Выведи количество 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

Потренируйтесь самостоятельно: Онлайн-компилятор Luau