Встроенные функции и стандартная библиотека Lua
Встроенные функции в Lua
Базовые встроенные функции
| Функция | Значение | Пример |
|---|---|---|
assert | Проверка условия и генерация ошибки при его нарушении | assert(x > 0, "x должен быть положительным") |
collectgarbage | Управление сборщиком мусора | collectgarbage("collect") |
dofile | Выполнение кода из файла | dofile("config.lua") |
error | Генерация ошибки с сообщением | error("Произошла ошибка", 2) |
getmetatable | Получение метатаблицы объекта | local mt = getmetatable(obj) |
ipairs | Создание итератора для прохода по индексированным элементам таблицы | for i, v in ipairs(t) do print(v) end |
load | Загрузка строки как функции для выполнения | local f = load("return 42") |
loadfile | Загрузка файла как функции для выполнения | local f = loadfile("script.lua") |
next | Получение следующей пары ключ-значение из таблицы | local k, v = next(t, prev_key) |
pairs | Создание итератора для прохода по всем элементам таблицы | for k, v in pairs(t) do print(k, v) end |
pcall | Защищённый вызов функции с перехватом ошибок | local ok, result = pcall(func, arg1) |
print | Вывод значений на стандартный вывод | print("Привет, мир!") |
rawequal | Прямое сравнение двух значений без учёта метаметодов | local eq = rawequal(a, b) |
rawget | Прямое получение значения из таблицы без учёта метаметодов | local v = rawget(t, key) |
rawlen | Получение длины таблицы или строки без учёта метаметодов | local len = rawlen(t) |
rawset | Прямая установка значения в таблицу без учёта метаметодов | rawset(t, key, value) |
require | Загрузка и выполнение модуля | local mod = require("mymodule") |
select | Выбор и подсчёт аргументов переменной длины | local count = select("#", ...) |
setmetatable | Установка метатаблицы для объекта | setmetatable(t, mt) |
tonumber | Преобразование значения в число | local num = tonumber("123") |
tostring | Преобразование значения в строку | local str = tostring(42) |
type | Определение типа значения | local t = type(x) |
xpcall | Защищённый вызов с обработчиком ошибок | local ok, result = xpcall(func, err_handler) |
Функции библиотеки string
| Функция | Значение | Пример |
|---|---|---|
string.byte | Получение кодов символов строки | string.byte("ABC", 1, 3) |
string.char | Создание строки из кодов символов | string.char(65, 66, 67) |
string.dump | Сериализация функции в бинарную строку | local bin = string.dump(func) |
string.find | Поиск подстроки с возможностью захвата | string.find(s, pattern) |
string.format | Форматирование строки по шаблону | string.format("%d + %d = %d", 2, 2, 4) |
string.gmatch | Создание итератора для поиска всех совпадений | for w in string.gmatch(s, "%w+") do |
string.gsub | Замена всех совпадений в строке | string.gsub(s, pattern, repl) |
string.len | Получение длины строки | string.len("hello") |
string.lower | Преобразование строки в нижний регистр | string.lower("HELLO") |
string.match | Поиск первого совпадения по шаблону | string.match(s, pattern) |
string.rep | Повторение строки заданное количество раз | string.rep("a", 5) |
string.reverse | Разворот строки задом наперёд | string.reverse("hello") |
string.sub | Извлечение подстроки | string.sub(s, 1, 5) |
string.upper | Преобразование строки в верхний регистр | string.upper("hello") |
Функции библиотеки table
| Функция | Значение | Пример |
|---|---|---|
table.concat | Объединение элементов таблицы в строку | table.concat(t, ", ") |
table.insert | Вставка элемента в таблицу | table.insert(t, value) |
table.move | Перемещение элементов внутри таблицы | table.move(a, 1, 5, 10, b) |
table.pack | Создание таблицы из аргументов переменной длины | table.pack(...) |
table.remove | Удаление и возврат элемента из таблицы | table.remove(t, index) |
table.sort | Сортировка элементов таблицы | table.sort(t, comp) |
table.unpack | Распаковка таблицы в список значений | table.unpack(t, i, j) |
Функции библиотеки math
| Функция | Значение | Пример |
|---|---|---|
math.abs | Абсолютное значение числа | math.abs(-5) |
math.acos | Арккосинус | math.acos(0.5) |
math.asin | Арксинус | math.asin(0.5) |
math.atan | Арктангенс | math.atan(1) |
math.atan2 | Арктангенс с учётом квадранта | math.atan2(y, x) |
math.ceil | Округление вверх до целого | math.ceil(3.14) |
math.cos | Косинус | math.cos(math.pi) |
math.deg | Преобразование радиан в градусы | math.deg(math.pi) |
math.exp | Экспонента | math.exp(1) |
math.floor | Округление вниз до целого | math.floor(3.9) |
math.fmod | Остаток от деления с плавающей точкой | math.fmod(10.5, 3) |
math.huge | Представление положительной бесконечности | if x > math.huge then |
math.log | Натуральный логарифм | math.log(10) |
math.log10 | Десятичный логарифм | math.log10(100) |
math.max | Максимальное значение из аргументов | math.max(1, 5, 3) |
math.min | Минимальное значение из аргументов | math.min(1, 5, 3) |
math.modf | Разделение числа на целую и дробную части | math.modf(3.14) |
math.pi | Математическая константа π | local pi = math.pi |
math.pow | Возведение в степень | math.pow(2, 10) |
math.rad | Преобразование градусов в радианы | math.rad(180) |
math.random | Генерация псевдослучайного числа | math.random(1, 100) |
math.randomseed | Установка начального значения генератора случайных чисел | math.randomseed(os.time()) |
math.sin | Синус | math.sin(0) |
math.sqrt | Квадратный корень | math.sqrt(16) |
math.tan | Тангенс | math.tan(math.pi / 4) |
math.tointeger | Преобразование в целое число | math.tointeger(3.0) |
math.type | Получение типа числа | math.type(3.14) |
math.ult | Сравнение целых чисел без знака | math.ult(a, b) |
Функции библиотеки os
| Функция | Значение | Пример |
|---|---|---|
os.clock | Получение времени процессора в секундах | local start = os.clock() |
os.date | Форматирование даты и времени | os.date("%Y-%m-%d %H:%M:%S") |
os.difftime | Вычисление разницы между двумя временными метками | os.difftime(t2, t1) |
os.execute | Выполнение системной команды | os.execute("dir") |
os.exit | Немедленное завершение программы | os.exit(0) |
os.getenv | Получение значения переменной окружения | os.getenv("PATH") |
os.remove | Удаление файла или директории | os.remove("file.txt") |
os.rename | Переименование файла или директории | os.rename("old.txt", "new.txt") |
os.setlocale | Установка локали для программы | os.setlocale("en_US.UTF-8") |
os.time | Получение текущего времени или преобразование таблицы времени | os.time() |
os.tmpname | Генерация имени временного файла | local tmp = os.tmpname() |
Функции библиотеки io
| Функция | Значение | Пример |
|---|---|---|
io.close | Закрытие файла | io.close(file) |
io.flush | Сброс буфера вывода | io.flush() |
io.input | Установка или получение текущего файла ввода | io.input("input.txt") |
io.lines | Создание итератора для чтения строк из файла | for line in io.lines("file.txt") do |
io.open | Открытие файла с указанным режимом | local f = io.open("file.txt", "r") |
io.output | Установка или получение текущего файла вывода | io.output("output.txt") |
io.popen | Открытие процесса для чтения или записи | io.popen("ls -la") |
io.read | Чтение данных из текущего файла ввода | local data = io.read("*all") |
io.stderr | Стандартный поток ошибок | io.stderr:write("Ошибка") |
io.stdin | Стандартный поток ввода | local input = io.stdin:read() |
io.stdout | Стандартный поток вывода | io.stdout:write("Вывод") |
io.tmpfile | Создание временного файла | local tmp = io.tmpfile() |
io.type | Проверка типа объекта файла | io.type(file) |
io.write | Запись данных в текущий файл вывода | io.write("Данные") |
Функции библиотеки debug
| Функция | Значение | Пример |
|---|---|---|
debug.debug | Вход в интерактивный режим отладки | debug.debug() |
debug.gethook | Получение текущего хука отладки | local hook = debug.gethook() |
debug.getinfo | Получение информации о функции | debug.getinfo(1, "n") |
debug.getlocal | Получение имени и значения локальной переменной | debug.getlocal(1, 1) |
debug.getmetatable | Получение метатаблицы без вызова метаметода | debug.getmetatable(obj) |
debug.getregistry | Получение реестра отладки | debug.getregistry() |
debug.getupvalue | Получение имени и значения апвэлью | debug.getupvalue(func, 1) |
debug.sethook | Установка хука отладки | debug.sethook(hook_func, "cr") |
debug.setlocal | Установка значения локальной переменной | debug.setlocal(1, 1, value) |
debug.setmetatable | Установка метатаблицы без вызова метаметода | debug.setmetatable(obj, mt) |
debug.setupvalue | Установка значения апвэлью | debug.setupvalue(func, 1, value) |
debug.traceback | Получение трассировки стека вызовов | debug.traceback() |
debug.upvalueid | Получение уникального идентификатора апвэлью | debug.upvalueid(func, 1) |
debug.upvaluejoin | Привязка апвэлью одной функции к другой | debug.upvaluejoin(f1, 1, f2, 2) |
Функции библиотеки coroutine
| Функция | Значение | Пример |
|---|---|---|
coroutine.create | Создание новой корутины | local co = coroutine.create(func) |
coroutine.isyieldable | Проверка возможности вызова yield | coroutine.isyieldable() |
coroutine.resume | Возобновление выполнения корутины | coroutine.resume(co) |
coroutine.running | Получение текущей выполняющейся корутины | coroutine.running() |
coroutine.status | Получение статуса корутины | coroutine.status(co) |
coroutine.wrap | Создание функции-обёртки для корутины | local f = coroutine.wrap(func) |
coroutine.yield | Приостановка выполнения корутины | coroutine.yield(value) |
Функции библиотеки package
| Функция | Значение | Пример |
|---|---|---|
package.config | Строка конфигурации пути для загрузки модулей | print(package.config) |
package.cpath | Путь для поиска бинарных модулей | package.cpath |
package.loaded | Таблица загруженных модулей | package.loaded["module"] |
package.loadlib | Загрузка бинарной библиотеки | package.loadlib(libpath, funcname) |
package.path | Путь для поиска модулей на языке Lua | package.path |
package.preload | Таблица функций предзагрузки модулей | package.preload["module"] |
package.searchers | Список функций-поисковиков модулей | package.searchers |
package.searchpath | Поиск модуля по указанному пути | package.searchpath(name, path) |
Функции библиотеки utf8
| Функция | Значение | Пример |
|---|---|---|
utf8.char | Создание строки из кодовых точек UTF-8 | utf8.char(0x41, 0x42) |
utf8.charpattern | Шаблон для поиска символов UTF-8 | string.match(s, utf8.charpattern) |
utf8.codes | Создание итератора для кодовых точек строки | for p, c in utf8.codes(s) do |
utf8.codepoint | Получение кодовых точек из строки | utf8.codepoint(s, 1, 3) |
utf8.len | Получение длины строки в символах UTF-8 | utf8.len("Привет") |
utf8.offset | Получение позиции байта для заданного символа | utf8.offset(s, 3) |
Специальные значения и константы
| Функция | Значение | Пример |
|---|---|---|
_G | Глобальная таблица окружения | _G.print("Привет") |
_VERSION | Версия интерпретатора Lua | print(_VERSION) |
nil | Отсутствие значения | local x = nil |
true | Логическое значение истина | local flag = true |
false | Логическое значение ложь | local flag = false |
... | Переменное количество аргументов | function f(...) end |
Метаметоды таблиц
| Метаметод | Значение | Пример |
|---|---|---|
__index | Обработка доступа к отсутствующему ключу | mt.__index = function(t, k) |
__newindex | Обработка присваивания отсутствующему ключу | mt.__newindex = function(t, k, v) |
__call | Вызов таблицы как функции | mt.__call = function(t, ...) |
__metatable | Защита метатаблицы от изменения | mt.__metatable = "защищено" |
__mode | Установка режима слабых ссылок | mt.__mode = "k" |
__len | Определение длины таблицы | mt.__len = function(t) |
__pairs | Изменение поведения pairs | mt.__pairs = function(t) |
__ipairs | Изменение поведения ipairs | mt.__ipairs = function(t) |
__tostring | Преобразование таблицы в строку | mt.__tostring = function(t) |
__concat | Конкатенация таблиц | mt.__concat = function(t1, t2) |
__unm | Унарный минус | mt.__unm = function(t) |
__add | Оператор сложения | mt.__add = function(t1, t2) |
__sub | Оператор вычитания | mt.__sub = function(t1, t2) |
__mul | Оператор умножения | mt.__mul = function(t1, t2) |
__div | Оператор деления | mt.__div = function(t1, t2) |
__mod | Оператор взятия остатка | mt.__mod = function(t1, t2) |
__pow | Оператор возведения в степень | mt.__pow = function(t1, t2) |
__eq | Оператор сравнения на равенство | mt.__eq = function(t1, t2) |
__lt | Оператор меньше | mt.__lt = function(t1, t2) |
__le | Оператор меньше или равно | mt.__le = function(t1, t2) |
__band | Побитовое И | mt.__band = function(t1, t2) |
__bor | Побитовое ИЛИ | mt.__bor = function(t1, t2) |
__bxor | Побитовое исключающее ИЛИ | mt.__bxor = function(t1, t2) |
__bnot | Побитовое НЕ | mt.__bnot = function(t) |
__shl | Побитовый сдвиг влево | mt.__shl = function(t1, t2) |
__shr | Побитовый сдвиг вправо | mt.__shr = function(t1, t2) |