位元詩人 [Lua] 程式設計教學:使用運算子 (Operator)

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

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

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。