Lua 程式設計教學:運算子 (Operator)

PUBLISHED ON JAN 5, 2018 — PROGRAMMING

運算子 (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 的運算子優先順序比其他語言簡單得多,但不要強記該順序;在程式中儘量撰寫簡單的敘述,就不用強記這些規則。

comments powered by Disqus