論理演算子

Luaの論理演算子には、and、or、notがある。 制御構造(「制御構造」を参照)と同様、すべての論理演算子はfalseとnullの両方をfalseとみなし、それ以外はtrueとみなす。

否定演算子は常に偽か真を返すわけではない。 論理積演算子andは、この値がfalseまたはnullであれば第1引数を返し、そうでなければ第2引数を返す。 論理和演算子orは、第一引数がnullとfalseのどちらかであればその値を返し、そうでなければ第二引数を返す。 つまり、2番目のオペランドは必要な場合にのみ評価される。 以下にいくつかの例を示します。
±------------------±--------------±--------------±-----------±-----------+
| 10 | > or | > 20 | | > --> 10 |
±------------------±--------------±--------------±-----------±-----------+
| 10 | > or | > error() | > --> 10 | |
±------------------±--------------±--------------±-----------±-----------+
| null or “a” | > --> “a” | | | |
±------------------±--------------±--------------±-----------±-----------+
| null and | 10 | > --> null | | |
±------------------±--------------±--------------±-----------±-----------+
| false and error() | > --> false | | | |
±------------------±--------------±--------------±-----------±-----------+
| false and | null | > --> false | | |
±------------------±--------------±--------------±-----------±-----------+
| false or | | > --> null | | |
±------------------±--------------±--------------±-----------±-----------+
| 10 | > and 20 | | > --> 20 | |
±------------------±--------------±--------------±-----------±-----------+

--> は直前の式の結果を示す。