Operatori logici
Gli operatori logici in Lua sono and, or e not. Come le strutture di controllo (vedere Strutture di controllo), tutti gli operatori logici considerano false e null come false e qualsiasi altra cosa come vera.
L'operatore di negazione non restituisce sempre falso o vero. L'operatore di congiunzione e restituisce il suo primo argomento se questo valore è falso o nullo; altrimenti, e restituisce il suo secondo argomento. L'operatore di disgiunzione o restituisce il suo primo argomento se questo valore è diverso da null e false; altrimenti, o restituisce il suo secondo argomento. Sia and che or utilizzano una valutazione abbreviata; cioè, il secondo operando viene valutato solo se necessario. Di seguito sono riportati alcuni esempi:
±------------------±--------------±--------------±-----------±-----------+
| 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 | |
±------------------±--------------±--------------±-----------±-----------+
--> indica il risultato dell'espressione precedente.