🌙 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-аддоны.