Массивы как таблицы
Индексация Lua с отсчётом от единицы.
«Массивы как таблицы» — бесплатный урок Lua Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.
Таблицы — это списки Lua
В Lua есть один тип контейнера — таблица. Если хранить значения по порядку, таблица работает как массив или список.
Пустую таблицу создают с помощью {} и заполняют позже либо сразу перечисляют значения внутри фигурных скобок.
local fruits = {"apple", "banana", "cherry"}
print(fruits)Индексация начинается с 1
Это самое важное правило: массивы Lua используют индексацию с 1. Первый элемент находится по индексу 1, а не 0.
Используйте квадратные скобки, чтобы прочитать элемент по его позиции.
local fruits = {"apple", "banana", "cherry"}
print(fruits[1])
print(fruits[2])
print(fruits[3])Индекс 0 пуст
Поскольку отсчёт начинается с 1, позиция 0 обычно ничего не содержит.
Чтение индекса, которому ещё не присвоено значение, возвращает nil. Начинающие разработчики, пришедшие из других языков, часто на этом ошибаются.
local colors = {"red", "green", "blue"}
print(colors[0])
print(colors[1])Запись элемента
Чтобы задать или заменить значение, присвойте его позиции с помощью синтаксиса с квадратными скобками.
Здесь мы заменяем значение во второй ячейке. Изменение будет видно при следующем чтении этого индекса.
local scores = {10, 20, 30}
scores[2] = 99
print(scores[2])Построение таблицы по шагам
Можно начать с пустой таблицы и добавлять элементы по последовательным индексам. Не забывайте начинать с 1, чтобы сохранить правильную последовательность.
В последовательности нет пропусков: индексы 1, 2 и 3 заполнены.
local nums = {}
nums[1] = 5
nums[2] = 10
nums[3] = 15
print(nums[1], nums[2], nums[3])Значения разных типов
Таблица Lua может хранить значения разных типов в одной последовательности: числа, строки и логические значения.
Lua не требует, чтобы все элементы имели один и тот же тип, как это делают некоторые языки.
local mixed = {42, "hello", true}
print(mixed[1])
print(mixed[2])
print(mixed[3])Вывод всех элементов
Чтобы показать каждый элемент, пройдите от индекса 1 вверх с помощью числового цикла for.
В следующем уроке мы познакомимся с более удобным способом — ipairs, но этот цикл наглядно показывает диапазон с индексацией от 1.
local pets = {"cat", "dog", "fish"}
for i = 1, 3 do
print(i, pets[i])
endВложенные таблицы
Элементом таблицы сама может быть таблица. Это позволяет создавать строки, сетки или сгруппированные данные.
Чтобы обратиться внутрь таблицы, объединяйте квадратные скобки: grid[1][2] читает значение в строке 1, столбце 2 (оба индекса начинаются с 1).
local grid = {
{1, 2, 3},
{4, 5, 6}
}
print(grid[1][2])
print(grid[2][3])Первый и последний элемент по позиции
Первый элемент всегда находится в list[1]. Для последовательности известного размера последний элемент находится по индексу, равному этому размеру.
Здесь три элемента означают, что последний находится по индексу 3.
local week = {"Mon", "Tue", "Wed"}
print("first:", week[1])
print("last:", week[3])Изменение значений на месте
Таблицы изменяемы. Можно обновить любую существующую ячейку, не создавая весь список заново.
Ниже мы увеличиваем каждый результат, заново присваивая значения всем индексам в цикле.
local scores = {1, 2, 3}
for i = 1, 3 do
scores[i] = scores[i] + 10
end
print(scores[1], scores[2], scores[3])Таблицы как записи и массивы
Тот же тип таблицы также хранит именованные ключи, например person.name. Если ключами являются целые числа 1, 2, 3..., такую таблицу называют последовательностью или массивом.
В этом уроке рассматривается вариант с последовательностью и числовыми ключами, начинающимися с 1.
local list = {"a", "b"}
list[3] = "c"
print(list[1], list[2], list[3])Проверка знаний
Проверьте, как вы поняли индексацию в Lua.
Итоги
Вы узнали, что Lua использует таблицы как массивы, а индексация начинается с 1: первый элемент находится в [1].
Вы можете читать, записывать и вкладывать элементы таблиц, а в правильной последовательности нет пропусков. Далее вы научитесь динамически добавлять и удалять элементы.
Часто задаваемые вопросы
Урок «Массивы как таблицы» бесплатный?
Да — полный текст урока «Массивы как таблицы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.
Чему я научусь в уроке «Массивы как таблицы»?
Индексация Lua с отсчётом от единицы. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Lua Academy?
Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Массивы как таблицы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Lua Academy?
Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Массивы как таблицы
- Добавление и удаление элементов
- Итерация с ipairs
- Длина и сортировка