Встроенные функции и стандартная библиотека 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 Данные = 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) |
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Lua — это компактный, быстрый, встраиваемый интерпретируемый язык программирования высокого уровня, разработанный с акцентом на простоту, гибкость и эффективность. Набор советов, правил, принципов и обычаев в разработке на этом языке. LÖVE (Love2D) - 2D-движок для создания игр на Lua, кроссплатформенный, имеет простой API (love.load(), love.update(dt), love.draw()), используется инди-разработчиками и для обучения. Lua 5.1 (2006) — стабильная, самая распространённая версия. Используется в World of Warcraft, Nginx, многих движках. Гайд по установке и настройке с написанием первой программы и её запуском. Кавычки, точки, запятые, скобки и прочие знаки препинания. Lua использует двадцать два зарезервированных ключевых слова. Все они являются частью синтаксиса языка и недоступны для использования в качестве идентификаторов. Типизация, набор правил определения типа данных значений языка. Lua предоставляет две формы условной конструкции — if-then-else и её компактный аналог через and/or, хотя последний используется с осторожностью из-за семантических различий. Анонимные функции (или лямбда-выражения) — это функции без имени, которые могут быть определены inline. Они особенно полезны при передаче в качестве аргументов или при создании замыканий. Объектно-ориентированное программирование (ООП) — это парадигма программирования, которая организует код вокруг объектов, объединяющих данные и поведение. В языке Lua отсутствует встроенная поддержка… Файл — это именованный набор данных, хранящийся на носителе информации. В Lua работа с файлами осуществляется через встроенную библиотеку io. Библиотека предоставляет функции для открытия, чтения,…Основы языка Lua
Рекомендации по разработке на Lua
Экосистема приложений на Lua
История языка Lua
Первая программа на Lua
Синтаксис и пунктуация в Lua
Ключевые слова языка Lua
Типы данных и объявление переменных в Lua
Управляющие конструкции и циклы в Lua
Функции, замыкания и анонимные функции
Объектно-ориентированное программирование в Lua
Работа со строками, таблицами и файлами