Menu
Coddy logo textTech

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

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

Ты уже увеличиваешь и уменьшaешь таблицы 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) удаляет первый элемент и сдвигает всё остальное вниз. Поскольку массив имеет тип {string}, Luau знает, что возвращаемое значение является строкой.

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

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

challenge icon

Задание

Легко

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

  1. append "<code>quit" с помощью table.insert
  2. выполни insert "<code>help" в position 1
  3. удали last command с помощью table.remove, сохранив возвращённое значение

Наконец, выведи каждое значение в отдельной строке:

  1. removed command
  2. сколько command осталось
  3. first command в queue
  4. queue[10]: слот, который ничего не содержит

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

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

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

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

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