0Pricing
Lua Academy · Урок

Функции библиотеки table

Применяйте table.insert, remove, sort, concat, move и unpack.

«Функции библиотеки table» — бесплатный урок Lua Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Lua Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Lua Academy содержит 4 уроков всего.

Модуль table

Модуль table предоставляет функции для работы с таблицами Lua, используемыми как массивы: insert, remove, sort, concat, move и unpack.

table.insert

table.insert(t, val) добавляет элемент в конец. table.insert(t, pos, val) вставляет элемент в указанную позицию, сдвигая последующие элементы вправо.

local t = {"a", "b", "d"}
table.insert(t, "e")       -- append
table.insert(t, 3, "c")   -- insert at index 3
print(table.concat(t, ","))  -- a,b,c,d,e

table.remove

table.remove(t) удаляет и возвращает последний элемент. table.remove(t, pos) удаляет элемент в указанной позиции и сдвигает остальные элементы влево.

local t = {"x", "y", "z"}
print(table.remove(t))     -- z
print(table.remove(t, 1))  -- x
print(table.concat(t))     -- y

table.sort

table.sort(t, cmp) сортирует таблицу на месте. Без cmp используется <. Компаратор должен задавать строгое слабое упорядочивание.

local t = {3, 1, 4, 1, 5, 9, 2, 6}
table.sort(t)
print(table.concat(t, " "))  -- 1 1 2 3 4 5 6 9

table.concat

table.concat(t, sep, i, j) объединяет элементы массива в строку. Элементы должны быть строками или числами.

local words = {"Hello", "world", "from", "Lua"}
print(table.concat(words, " "))  -- Hello world from Lua

table.move

table.move(a1, f, e, t, a2) копирует элементы из a1[f..e] в a2, начиная с позиции t. Если a2 не указан, копирование выполняется внутри a1.

local src = {1,2,3,4,5}
local dst = table.move(src, 2, 4, 1, {})
print(table.concat(dst, ","))  -- 2,3,4

table.unpack

table.unpack(t, i, j) возвращает элементы от t[i] до t[j] как отдельные значения. По умолчанию используются границы от 1 до #t.

local t = {10, 20, 30}
print(table.unpack(t))         -- 10  20  30
local a, b = table.unpack(t, 1, 2)
print(a, b)                    -- 10  20

table.pack

table.pack(...) упаковывает переменное число аргументов в таблицу с полем n, содержащим их общее количество, включая nil.

local function allArgs(...)
  local t = table.pack(...)
  print("count:", t.n)
  return t
end
allArgs(1, nil, 3)  -- count: 3

Имитация очереди с помощью insert/remove

Используйте table.insert для добавления элемента в конец очереди, а table.remove(t, 1) — для удаления элемента из начала (обратите внимание: стоимость операции O(n)).

Имитация стека

Используйте table.insert для добавления элемента в стек, а table.remove без указания позиции — для извлечения; обе операции выполняются за O(1).

table.move для сдвига

Сдвиньте все элементы влево на одну позицию с помощью table.move(t, 2, #t, 1), затем присвойте последнему элементу nil.

local t = {1,2,3,4,5}
table.move(t, 2, #t, 1)
t[#t] = nil
print(table.concat(t, ","))  -- 2,3,4,5

Вопрос о библиотеке table

Что возвращает table.pack(1, nil, 3)?

Итоги: библиотека table

Библиотека table предоставляет функции insert, remove, sort, concat, move, unpack и pack. Вместе они эффективно решают все распространённые задачи работы с массивами.

Часто задаваемые вопросы

Урок «Функции библиотеки table» бесплатный?

Да — полный текст урока «Функции библиотеки table» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Lua Academy, подпишись на CoddyKit PRO. Курс Lua Academy содержит 4 уроков всего.

Чему я научусь в уроке «Функции библиотеки table»?

Применяйте table.insert, remove, sort, concat, move и unpack. Ты практикуешь Lua Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Lua Academy?

Предыдущий опыт не требуется. Lua Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Функции библиотеки table»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Lua Academy?

Да. Каждый урок Lua Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Функции библиотеки math
  2. Функции библиотеки table
  3. Библиотеки os и io
  4. Библиотека debug
← Назад к Lua Academy