🌙 Lua
Лёгкий скриптовый язык: типы, таблицы, циклы, функции, корутины.
Шпаргалки · Программирование · #lua #scripting #games
IDE и запуск
ZeroBrane Studio, VS Code (расширение Lua). lua script.lua, интерактив lua. Менеджер пакетов: LuaRocks (luarocks install x). Встраивается в Neovim, Redis, игры.
Типы данных
nil, boolean, number (целые и дробные), string, table, function, thread (корутина), userdata.
local n = 1; local s = 'a'; local ok = true
local t = {1, 2, 3}; local d = {a = 1, b = 2}
print(type(n), #t) -- number 3
Индексы таблиц начинаются с 1. Ложны только nil и false (ноль истинен).
Операторы
+ - * / // % ^, == ~= < >, and or not, .. (склейка), # (длина).
Циклы
for i = 1, 3 do end
for i, v in ipairs(t) do end -- массивы
for k, v in pairs(d) do end -- все ключи
while cond do end
repeat until cond
Функции
local function add(a, b) return a + b end
local sq = function(x) return x * x end
local function multi() return 1, 2 end
Встроенные
print, type, tonumber, tostring, pairs, ipairs, select, pcall (ловит ошибки), require, string.format, table.insert, table.concat, math.random.
Корутины
local co = coroutine.create(function() coroutine.yield(1) end)
print(coroutine.resume(co))
Коллекции
table.insert(t, 4); table.remove(t, 1); table.sort(t)
table.concat({'a', 'b'}, ', ')
Где применяют
Roblox (Luau), LÖVE (игры), OpenResty / Nginx, Redis-скрипты, Neovim, WoW-аддоны.