0Pricing
Lua Academy · Урок

Массивы как таблицы

Индексация 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 — локальная установка не требуется.

Все уроки этого курса

  1. Массивы как таблицы
  2. Добавление и удаление элементов
  3. Итерация с ipairs
  4. Длина и сортировка
← Назад к Lua Academy