基礎 1:變數與輸出
這一頁假設你完全沒寫過程式。看完這一頁,你會認識 Lua 最基本的四件事:註解、變數、 數字與字串、還有兩種印出結果的方式。
註解
腳本裡 -- 開頭到那一行結尾的文字,程式完全不會執行——那是寫給人看的說明文字,
叫做「註解」。之後每支範例開頭都會有一兩行 -- 註解,說明這支腳本要做什麼。
-- 這一整行都是註解,程式不會執行它變數:一個有名字的箱子
變數就是一個有名字的箱子,可以放一個值進去,之後用這個名字就能拿回那個值。
在 Lua 裡,local 這個字代表「建立一個新箱子,只有這支腳本自己看得到」:
local count = 3這行的意思是:建立一個叫 count 的箱子,裡面放數字 3。之後在腳本裡寫 count,
就等於在說「箱子裡現在的那個值」。這個 = 叫做賦值:意思是「把右邊的值放進
左邊這個箱子」,跟數學課教的「兩邊相等」不是同一件事——下面會看到另一個長得像、
意思卻不一樣的 ==。
數字與字串
Lua 的值大致分兩種你現在需要知道的形式:
- 數字:
3、3.14這樣直接寫的數值。 - 字串:用雙引號包起來的一段文字,例如
"nexus";"到下一個"之間的 所有內容都是這段文字的一部分。
兩個字串可以用 .. 接在一起(叫做「串接」):
"name=" .. "nexus" -- 結果是 "name=nexus"如果 .. 旁邊是數字,Lua 會自動把數字轉成文字再接起來,所以 "count=" .. 3 會
變成 "count=3"。
兩種印出結果的方式
print(值1, 值2, ...):把值印出來,多個值之間會自動補一個 Tab 字元分隔。log(等級, 訊息):把訊息寫進 Log,等級是一個字串,最常用的是"info"。
兩者最後都會出現在 Log 裡;差別只在 print 可以一次印好幾個值、log 則是你自己
決定訊息的等級("info"/"warn"/"error" 等)。
比較是否相等:== 與布林值
Lua 有一種只有兩個可能值的型別,叫布林值:不是 true(成立/對),就是
false(不成立/不對)。「兩個值是不是相等」這種問題,答案就是布林值,寫法是
兩個等號 ==(跟前面「賦值」用的一個等號 = 不同,混用是很常見的錯誤):
count == 4 -- count 現在是不是 4;是的話結果為 true,不是就是 false之後範例裡看到的「條件」,指的就是一個算出來是 true/false 的東西,== 是
最常見的一種寫法;其他比較與邏輯運算子(~=、<、> 等)留到下一頁介紹。
認識 check()
範例裡常會看到 check(條件, 說明文字):它會判斷「條件」是不是成立,然後在 Log
留下一行 CHECK OK: 說明文字 或 CHECK FAIL: 說明文字,讓你不用自己盯著畫面比對
數字,一眼就能看出腳本跑到這裡時資料對不對。不論條件成不成立,腳本都會繼續往下
執行——check() 只負責記錄,不會讓腳本停下來。
範例:把這些東西兜起來
local pi = 3.14
type(pi) -- 回傳 "number",因為 pi 是數字type(值) 是 Lua 內建的函式,用來問「這個值是什麼種類」,字串的答案是 "string",
數字是 "number"。範例用它來驗證變數真的是我們以為的型別。
-- 變數、字串與數字:Lua 的基本語法。
local name = "nexus"
local count = 3
local pi = 3.14
log("info", "name=" .. name)
log("info", "count=" .. count)
check(count + 1 == 4, "count + 1 == 4")
check(type(pi) == "number", "pi is a number")
print(name, count)name=nexus
count=3
CHECK OK: count + 1 == 4
CHECK OK: pi is a number
nexus 3自己跑跑看(存下來、換成自己的完整路徑,做法見上一頁):
nexus_tui.exe --dongle mock --batch --run basics_vars.lua接下來
下一頁介紹流程控制:怎麼讓腳本依條件做不同的事、怎麼重複做同一件事很多次。