a, b = 10, 20;右值多餘捨棄,不足補 nil;先計算所有右值再賦值,故 i, a[i] = i+1, 20 修改的是 a[3] 而非 a[4]。-- if
if cond then block elseif cond then block else block end
-- while
while cond do block end
-- repeat-until(條件可見循環內局部變量)
repeat block until cond
-- 數值 for
for v = start, limit, step do block end
-- 泛型 for(迭代器)
for k, v in pairs(t) do block end -- 遍歷所有鍵
for k, v in ipairs(t) do block end -- 只遍歷連續整數鍵 1..n,遇 nil 停止
and:第一個假值返回它,否則返回第二個值。4 and 5 → 5。or:第一個真值返回它,否則返回第二個值。false or 5 → 5。not:只返回 true/false。not 0 → false(Lua 中 0 為真)。x = x or default 相當於 if not x then x = default end。(a and b) or c(注意 b 不能為假值)。-- 數組風格
days = {"Sun", "Mon", "Tue"}
-- 記錄風格
a = {x = 10, y = 20} -- 等價於 a={}; a.x=10; a.y=20
-- 通用風格
op = {["+"] = "add", ["-"] = "sub"}
-- 混合分隔符
t = {x=1, y=2; "a", "b"} -- 分號分隔不同風格
字符串長度 = 字節數。表長度 = 最大整數鍵 n 使得 t[n]≠nil 且 t[n+1]==nil;若有「空洞」結果未定義。
func = function(params) body end
function func(params) body end -- 語法糖
-- 可變參數
function f(...) ... end -- ... 必須在參數列表末尾
-- 方法語法糖
function obj:method(p) ... end -- 等價 function obj.method(self, p) ... end