Функции библиотеки 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,etable.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)) -- ytable.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 9table.concat
table.concat(t, sep, i, j) объединяет элементы массива в строку. Элементы должны быть строками или числами.
local words = {"Hello", "world", "from", "Lua"}
print(table.concat(words, " ")) -- Hello world from Luatable.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,4table.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 20table.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 — локальная установка не требуется.
Все уроки этого курса
- Функции библиотеки math
- Функции библиотеки table
- Библиотеки os и io
- Библиотека debug