Menu
Coddy logo textTech

Добавление и чтение элементов

Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 14 из 73.

Вы уже умеете увеличивать и уменьшать таблицы Lua с помощью table.insert и table.remove — обе функции работают абсолютно одинаково и с типизированными массивами. Разница заключается в том, что теперь Luau проверяет то, что вы вставляете: добавление строки в массив {number} будет отмечено ошибкой прямо во время ввода кода, а не обнаружится запутанным игроком во время выполнения.

local queue: {string} = {"save", "load"}
table.insert(queue, "quit")      -- добавить в конец
table.insert(queue, 1, "help")   -- вставить в позицию 1, сдвигая остальные
local last = table.remove(queue) -- удаляет И возвращает последний элемент

table.remove(t) извлекает последний элемент и возвращает его вам; table.remove(t, 1) удаляет первый элемент и сдвигает все остальные вниз (down). Поскольку массив имеет тип {string}, Luau знает, что возвращаемое значение — это строка (string).

Чтение так же снисходительно, как и в обычном Lua: индекс, не содержащий ничего — queue[0], queue[-1] или любой индекс за пределами #queue — тихо вычисляется в nil. Ошибка не возникает, поэтому используйте check на nil перед использованием значения, в существовании которого вы не уверены.

Ещё один инструмент в ваш арсенал: table.freeze(t) делает таблицу доступной только для чтения во время выполнения — любая последующая попытка изменить её приведет к ошибке. Это решение Luau для константных данных (конфигурации, фиксированные списки уровней), которые никогда не должны меняться после создания.

challenge icon

Задание

Легко

Создайте типизированный массив queue: {string}, инициализированный значениями "save" и "load". Затем:

  1. добавьте "<code>quit" с помощью table.insert
  2. вставьте "<code>help" в позицию 1
  3. удалите последнюю команду с помощью table.remove, сохранив возвращенное значение

В завершение выведите, каждое на отдельной строке:

  1. удаленную команду
  2. сколько команд осталось
  3. первую команду в очереди
  4. queue[10] — слот, который ничего не содержит

Попробуйте сами

-- Напишите код здесь
-- 1) объявите очередь: {string} с "save" и "load"
-- 2) добавьте точный текст из инструкций, вставьте точный текст из инструкций в позицию 1
-- 3) удалите последнюю команду, затем выведите четыре значения
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в Luau

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