x,y = y,x --變量交換 a[i], a[j] = a[j], a[i] -- 值的個數小於變量的個數 x, y, z = 1, 5 -- z = nil x, y = 1, 5, 8 -- x = 1, y = 5
x = 10 local i = 1 while i < x do local x = i * 2 print(x) -- 2, 4, 6 ... i = i + 1 end print(x) -- 10 if i > 20 then local x x = 20 print(x + 2) -- 22 else print(x) -- 10 end print(x) -- 10
交互模式將每一行理解爲一個程序塊,並當即執行,可能結果會不一樣數組
顯式的界定一個塊函數
do -- code block end
儘可能使用局部變量測試
-- 習慣寫法 local foo = foo -- 全局變量 foo 的值賦給局部變量 foo, 用來保存全局變量的值
iflua
if 條件表達式 then else end if a < 0 then a = 0 end if a < b then return a else return b end -- lua 不支持 switch if op == "+" then r = a + b elseif op == "-" then r = a - b elseif op == "*" then r = a * b elseif op == "/" then r = a / b else error("invalid operation") end
whilecode
local i = 1 while a[i] do print(a[i]) i = i + 1 end
repeat...until索引
repeat line = io.read() until line ~= ""
-- 這在 lua 中是能夠執行的 local sqr = x / 2 repeat sqr = (sqr + x / sqr) / 2 local error = math.abs(sqr ^ 2 - x) until error < x / 10000
數值型 forip
for var = exp1, exp2, exp3 do -- 執行體 end for i = 10, 1, -1 do print(i) -- 10, 9, 8,... end
for 的細節作用域
泛型 for字符串
for i,v in ipairs(a) do print(v) end -- 打印 table 中的 key 值 for k, in pairs(t) do print(k) end
二種 for 類型的共同點it
days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} -- 將名稱轉換成它在一週中的位置,索引爲字符串,值爲對應的位置,方便查找,逆向 table revDays = {["Sunday"] = 1, ["Monday"] = 2 ,["Tuesday"] = 3, ["Wednesday"] = 4, ["Thursday"] = 5, ["Friday"] = 6, ["Saturday"] = 7} x = "Tuesday" print(revDays[x]) -- 3 打印 Tuesday 的位置 revDays = {} for k,v in pairs(days) do revDays[v] = k end
local i = 1 while a[i] do if a[i] == v then break -- 條件語句塊中的最後一條語句 end i = i + 1 end