Простые приложения на Lua
Простые приложения на Lua
Lua — лёгкий встраиваемый язык: игры (Roblox/Luau), nginx (OpenResty), конфиги. Стандартная библиотека даёт io, math, таблицы; JSON — через dkjson или встроенный в Luau.
Как запускать примеры из главы
- Команда:
lua имя.lua(илиluajit имя.lua). - Проверка:
lua -v.
Генератор паролей
Как запустить
- Файл:
password.lua - Команда:
lua password.lua
math.randomseed(os.time())
local function generate_password(len)
local chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
local t = {}
for i = 1, len do
local idx = math.random(1, #chars)
t[i] = chars:sub(idx, idx)
end
return table.concat(t)
end
print(generate_password(16))
Сортировщик файла
local function sort_file(input, output)
local f = assert(io.open(input, 'r'))
local lines = {}
for line in f:lines() do
line = line:match('^%s*(.-)%s*$')
if line ~= '' then lines[#lines + 1] = line end
end
f:close()
table.sort(lines)
local out = assert(io.open(output, 'w'))
for _, line in ipairs(lines) do out:write(line, '\n') end
out:close()
end
Калькулятор
local function calc(a, b, op)
if op == '+' then return a + b
elseif op == '-' then return a - b
elseif op == '*' then return a * b
elseif op == '/' then
if b == 0 then return nil, 'div0' end
return a / b
end
return nil, 'badop'
end
Трекер (таблица + сериализация)
Для учёба без внешних библиотек — простой формат:
local function save_tasks(path, tasks)
local f = assert(io.open(path, 'w'))
for _, t in ipairs(tasks) do
f:write(string.format('%d\t%s\t%s\n', t.id, t.title, t.done and '1' or '0'))
end
f:close()
end
В продакшене — dkjson.encode(tasks).
Характерный пример — таблицы как единственная структура
local words = {}
for w in ('lua tables are powerful'):gmatch('%S+') do
words[w] = (words[w] or 0) + 1
end
for w, n in pairs(words) do print(w, n) end
Таблицы совмещают массив и словарь — центральная идея Lua.
См. также: Luau и Roblox в разделе
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). 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
Рекомендации по разработке на Lua
Экосистема приложений на Lua
История языка Lua
Первая программа на Lua
Синтаксис и пунктуация в Lua
Ключевые слова языка Lua
Встроенные функции и стандартная библиотека Lua
Типы данных и объявление переменных в Lua
Управляющие конструкции и циклы в Lua
Функции, замыкания и анонимные функции
Объектно-ориентированное программирование в Lua