Opérateurs logiques

Les opérateurs logiques en Lua sont and, or et not. Comme les structures de contrôle (voir Structures de contrôle), tous les opérateurs logiques considèrent à la fois false et null comme faux et tout le reste comme vrai.

L'opérateur de négation ne renvoie pas toujours faux ou vrai. L'opérateur de conjonction et renvoie son premier argument si cette valeur est fausse ou nulle ; sinon, et renvoie son deuxième argument. L'opérateur de disjonction ou renvoie son premier argument si cette valeur est différente de null et false ; sinon, ou renvoie son deuxième argument. Les deux et et ou utilisent une évaluation abrégée, c'est-à-dire que le second opérande n'est évalué que si cela est nécessaire. Voici quelques exemples :
±------------------±--------------±--------------±-----------±-----------+
| 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 | |
±------------------±--------------±--------------±-----------±-----------+

--> indique le résultat de l'expression précédente.