第一版是針對 Lua 5.0 編寫的。雖然對後續版本來說仍然有很大的關聯性,但還是有些差異。
第四版針對 Lua 5.3,可在 Amazon 和其他書店買到。
購買本書,您同時也能 贊助 Lua 專案


3.3 – 邏輯運算子

邏輯運算子有 andornot。就像控制結構一樣,所有邏輯運算子都視 falsenil 為 false,而將其他任何東西視為 true。運算子 and 會傳回第一個引數,如果它是 false;否則,它會傳回第二個引數。運算子 or 會傳回第一個引數,如果它不是 false;否則,它會傳回第二個引數。
    print(4 and 5)         --> 5
    print(nil and 13)      --> nil
    print(false and 13)    --> false
    print(4 or 5)          --> 4
    print(false or 5)      --> 5
andor 都使用捷徑評估,也就是說,它們只在必要時評估第二個運算元。

一個有用的 Lua 慣用語法是 x = x or v,它等於

    if not x then x = v end
也就是說,當 x 未設定時,它會將 x 設定為預設值 v(前提是 x 未設定為 false)。

另一個有用的慣用語法是 (a and b) or c(或僅為 a and b or c,因為 and 的優先權高於 or),它等於 C 運算式

    a ? b : c
前提是 b 不是 false。例如,我們可以用類似下列陳述式的語句來選取兩個數字 xy 的最大值
    max = (x > y) and x or y
x > y 時,and 的第一個運算式為 true,因此 and 會產生第二個運算式(x)(它也是 true,因為它是一個數字),然後 or 運算式會產生第一個運算式的值,x。當 x > y 為 false 時,and 運算式為 false,因此 or 會產生第二個運算式,y

運算子 not 始終傳回 truefalse

    print(not nil)      --> true
    print(not false)    --> true
    print(not 0)        --> false
    print(not not nil)  --> false