初版は Lua 5.0 向けに書かれました。後継バージョンには関連性が高いですが、違いもあります。
第 4 版は Lua 5.3 を対象としており、Amazon および他の書店で販売されています。
書籍を購入することで、Lua プロジェクトを支援することもできます。


3.3 – 論理演算子

論理演算子には andornot があります。制御構造と同じく、すべての論理演算子は falsenil を false とみなし、それ以外は true とみなします。演算子 and は、入力が false の場合、最初の引数を返します。それ以外の場合は、2 番目の引数を返します。演算子 or は、入力が false でない場合、最初の引数を返します。それ以外の場合は、2 番目の引数を返します。
    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 のどちらもショートカット評価を使用します。つまり、必要に応じてのみ 2 番目のオペランドを評価します。

便利な Lua の慣用句として、x = x or v があります。これは次と等価です。

    if not x then x = v end
つまり、x が設定されていない場合に、x を既定値 v に設定します (ただし、xfalse に設定されていない場合)。

もう 1 つの便利な慣用句として、(a and b) or c (または単に a and b or candor よりも優先度が高いからです) があります。これは、C 式の次と同等です。

    a ? b : c
ただし、b が false でない場合に限り当てはまります。たとえば、2 つの数値 xy の最大値を選択する場合は、次のようなステートメントを使用します。
    max = (x > y) and x or y
x > y の場合、and の最初の式は true になるので、and は 2 番目の式 (x) (true でもある。数値だから) を返します。その後、or 式は最初の式、x の値を返します。x > y が false の場合、and 式は false になるので、or は 2 番目の式、y を返します。

演算子 not は常に true または false を返します。

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