【Lua 筆記】運算子 - part 2
【Lua 筆記】運算子 - part 2
由於有款遊戲叫做 CSO(Counter-Strike Online),內建模式創世者模式(Studio)新增使用 Lua 及其遊戲的 API,所以突發奇想製作這個筆記。
這個筆記會在一開始先著重純粹的程式設計自學,在最後的章節才會與 CSO 遊戲 API 進行應用。
運算子(Operator)
運算子(Operator),是用來告訴直譯器來執行特定的數學或邏輯運算之符號。Lua 共有以下這幾種運算子:
- 算術運算子(Arithmetic Operator)
- 關係運算子(Relational Operator)
- 邏輯運算子(Logical Operator)
運算子,筆者用一個簡單的例子來讓你理解:
1 + 1
1 被稱為是運算元(operand),是要拿來被運算的單元。
+ 被稱為運算子(operator),在上述例子中是拿來當作數學運算的符號。
1 + 1,整體被稱為是一種運算式(expression),運算式就是運算元+運算子,而運算式也有人叫做表達式,都可以。
算術運算子(Arithmetic Operator)
簡單來說,算術運算子就是拿來做四則運算的運算子。
以下表格,假設 A = 10,B = 20。
| 運算子 | 敘述 | 範例 |
|---|---|---|
| + | 加法 | A + B = 30 |
| - | 減法 | A - B = -10 |
| * | 乘法 | A * B = 200 |
| / | 除法 | A / B = 0.5 |
| % | 取模(mod),取餘數。 | A % B = 10 |
| ^ | 乘冪(指數) | A ^ 2 = 100 |
| - | 負號 | -A = -10 |
| // | 整除運算子(lua 5.3 版本支援),簡單來說就只是取商數。 | 10 // 3 = 3 |
表格來源:Lua 运算符 | 菜鸟教程
看到這表格,不禁讓筆者覺得 Lua 跟 Python 其實是有幾分像的,比如說兩者都是直譯式語言,同樣有 // 運算子。
我們來做個範例(改自菜鳥教程):
1 | a = 21 |
輸出結果:
1 | Line 1 - a + b : 31 |
上面你可能注意到了,c = a + b 這個動作,這個表示將 a + b 的值相加過後,指定給 c。
如果是變成這樣:a = a + 1
則是表示,a + 1 過後,指定給 a。
關係運算子/比較運算子(Relational Operator/Comparison Operator)
關係運算子或稱比較運算子,總之你把它想成是一個專門用來比大小的運算子就行XD。
以下表格,假設 A = 10,B = 20。
| 運算子 | 敘述 | 範例 |
|---|---|---|
| == | 比較兩個運算元是否數值相同,相同 -> 回傳 true;不相同 -> 回傳 false | (A == B) 是 false |
| ~= | 比較兩個運算元是否數值不相同,不相同 -> 回傳 true;相同 -> 回傳 false | (A ~= B) 是 true |
| > | 比較運算子左邊的運算元是否大於右邊的,大於 -> 回傳 true;小於 -> 回傳 false | (A > B) 是 false |
| < | 比較運算子左邊的運算元是否小於右邊的,小於 -> 回傳 true;大於 -> 回傳 false | (A < B) 是 true |
| >= | 比較運算子左邊的運算元是否大於或等於右邊的,是 -> 回傳 true;否 -> 回傳 false | (A >= B) 是 false |
| <= | 比較運算子左邊的運算元是否小於或等於右邊的,是 -> 回傳 true;否 -> 回傳 false | (A <= B) 是 true |
表格來源:Lua 运算符 | 菜鸟教程
1 | A = 10 |
輸出結果:
1 | false |
邏輯運算子(Logical Operator)
邏輯運算子,在 lua 中分為 AND、OR、NOT。可以用我們之前在高中數學學過的文氏圖來表示,如下:

以下表格,假設 A = true, B = false。
| 運算子 | 敘述 | 範例 |
|---|---|---|
| and | 邏輯 AND 運算子。代表兩個條件都要是 true,才會是 true,其中之一不能有 false。 | (A and B) 是 false。 |
| or | 邏輯 OR 運算子。代表其中之一的條件是 true,才會是 true,若兩個條件都是 false,會是 false。 | (A or B) 是 true。 |
| not | 邏輯 NOT 運算子。用來反轉條件的運算子。 | not(A) 是 false。 |
表格改自:Lua 运算符 | 菜鸟教程
1 | A = true |
輸出結果:
1 | false |
若你還是不懂邏輯的概念,請看以下表格:



圖源:運算子 operator - Python 教學 | STEAM 教育學習網
其他的運算子(others)
| 運算子 | 敘述 | 範例 |
|---|---|---|
| .. | 連接兩個字串 | a..b ,其中 a 為 “Hello “,b 為 “World”, 輸出結果為 “Hello World”。 |
| # | 一元運算子,回傳字串或 table 的長度 | #”Hello” 回傳 5 |
表格來源:Lua 运算符 | 菜鸟教程
1 | a = "Hello " |
輸出結果:
1 | The string combine after is : Hello World! |
總結
今日已學:
- 算術運算子(Arithmetic Operator)
- 關係運算子(Relational Operator)
- 邏輯運算子(Logical Operator)
是的沒錯,Lua 運算子就這麼少,所以才說它好學。
算術運算子:四則運算。
關係運算子:比大小。
邏輯運算子:AND、OR、NOT,分別是「兩條件成立(true),否則不成立(false)」、「兩條件其中之一成立即成立(true),否則不成立(false)」、「反轉邏輯狀態(true 變成 false,false 變成 true)」。
..運算子:連接兩字串,可以想像成 Python 當中的 +。



