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