前言
在程式設計中,運算子 (operator) 多使用符號來撰寫,較少使用文字。由於運算子通常無法再化簡,我們將運算子視為該程式語言的基本指令,使用運算子用組合出更複雜的功能。本文介紹 Lua 可用的運算子。
代數運算子 (Arithmetic operators)
Lua 支援以下代數運算子:
+
:相加-
:相減、負號*
:相乘/
:相除%
:取餘數^
:取指數
其中取餘數比較特別一點,因 Lua 的數字是浮點數,而取餘數可對浮點數取值,見下例:
print(1 % 0.7)
但取出來不會剛好等於 0.3
,而有一點點誤差,因此,不建議對非整數取餘數。
關係運算子 (Relational operators)
Lua 支援以下關係運算子:
==
:相等~=
:不相等>
:大於>=
:大於或等於<
:小於<=
:小於或等於
見以下實例:
assert(3 + 2 == 5)
assert(3 + 2 ~= 4)
assert(3 + 2 > 4)
assert(3 + 2 >= 4)
assert(1 + 2 < 4)
assert(1 + 2 <= 4)
邏輯運算子 (Logical operators)
Lua 支援以下邏輯運算子:
and
:且or
:或not
:相反
見以下實例:
assert((true and true) == true)
assert((true and false) == false)
assert((false and true) == false)
assert((false and false) == false)
assert((true or true) == true)
assert((true or false) == true)
assert((false or true) == true)
assert((false or false) == false)
assert((not true) == false)
assert((not false) == true)
字串相接運算子
Lua 使用 ..
進行字串相接。見下例:
assert(("Hello " .. "World") == "Hello World")
和表相關的運算子
我們留到介紹表的章節一併介紹。
運算子優先順序 (Operator precedence)
在 Lua 中,運算子優先順序如下:
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or
雖然 Lua 的運算子優先順序比其他語言簡單得多,但不要強記該順序;在程式中儘量撰寫簡單的敘述,就不用強記這些規則。