🧱 Luau

Диалект Lua для Roblox: статические типы, задачи, сервисы.

Шпаргалки · Программирование · #luau #roblox #lua

IDE и запуск

Roblox Studio (встроенный редактор), VS Code + Rojo + Luau LSP. Код живёт в Script (сервер), LocalScript (клиент), ModuleScript (общие модули).

Типы данных

Как в Lua плюс необязательные аннотации:

local n: number = 1
local s: string = "a"
local maybe: number? = nil
local t: {number} = {1, 2, 3}
type User = { id: number, name: string }

Типы Roblox: Vector3, CFrame, Color3, Instance, UDim2.

Операторы

Как в Lua, плюс составные присваивания += -= *= /= ..= и if x then a else b как выражение.

Циклы

for i = 1, 10 do end
for i, v in ipairs(t) do end
for k, v in t do end              -- итерация без pairs

Функции

local function add(a: number, b: number): number return a + b end
part.Touched:Connect(function(hit) print(hit.Name) end)

Встроенные и сервисы

game:GetService("Players"), workspace, task.wait(), task.spawn(), task.delay(), Instance.new("Part"), :Destroy(), :WaitForChild(), print, warn.

Асинхронность

task.spawn(function() task.wait(1); print("готово") end)
local ok, err = pcall(function() end)
RunService.Heartbeat:Connect(function(dt) end)

Коллекции

table.insert, table.remove, table.find, table.clone, table.freeze, #t.

Библиотеки по задачам

Rojo (синхронизация с файлами), Wally (пакеты), Roact / React-lua (UI), Knit (фреймворк), ProfileService (данные игрока), TestEZ (тесты).