Lua

Quickstart (run a script)

bash
cat > main.lua <<'EOF'
print("hello")
EOF

lua main.lua

Project setup (LuaRocks)

bash
luarocks init --lua-version=5.4
# edit rockspec as needed

Tables

lua
local user = { id = "1", email = "a@b.com" }
print(user.email)

Functions

lua
local function add(a, b)
  return a + b
end

Variables + basic types

lua
local s = "str"
local n = 123
local ok = true
local nothing = nil

Iteration (numeric for, ipairs, pairs)

lua
for i = 1, 3 do
  print(i)
end

local xs = { "a", "b" }
for i, v in ipairs(xs) do
  print(i, v)
end

local m = { a = 1, b = 2 }
for k, v in pairs(m) do
  print(k, v)
end

Tables as maps + arrays

lua
local arr = { 10, 20, 30 }
local map = { a = 1, b = 2 }

Simple "class" pattern (tables + metatable)

lua
local User = {}
User.__index = User

function User.new(email)
  return setmetatable({ email = email }, User)
end

function User:to_string()
  return self.email
end

local u = User.new("a@b.com")
print(u:to_string())