Operadores lógicos

Los operadores lógicos en Lua son and, or, y not. Al igual que las estructuras de control (véase Estructuras de control), todos los operadores lógicos consideran tanto falso como nulo como falso y cualquier otra cosa como verdadero.

El operador de negación no siempre devuelve falso o verdadero. El operador de conjunción y devuelve su primer argumento si este valor es falso o nulo; en caso contrario, y devuelve su segundo argumento. El operador de disyunción or devuelve su primer argumento si este valor es distinto de null y false; en caso contrario, or devuelve su segundo argumento. Tanto and como or utilizan la evaluación abreviada; es decir, el segundo operando se evalúa sólo si es necesario. Aquí tiene algunos ejemplos:
±------------------±--------------±--------------±-----------±-----------+
| 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 el resultado de la expresión precedente.