Les opérateurs logiques sont and, or, et not.
Comme les structures de contrôle (if, while...), tous les opérateurs logiques considère à la fois false et nil comme faux et tout le reste comme vrai.
L'opérateur de négation not retourne toujours false ou true.
L'opérateur de conjonction and retourne son premier argument si cette valeur est false ou nil, ou son second argument dans le cas contraire.
L'opérateur de disjonction or retourne son premier argument si cette valeur est différente de nil et false, ou son second argument dans le cas contraire.
Les deux opérateurs and et or utilisent un raccourci d'évaluation.
C'est-à-dire que le second opérande est évalué uniquement si nécessaire.
Voici quelques exemples:
10 or 20 --> 10 10 or error() --> 10 nil or "a" --> "a" nil and 10 --> nil false and error() --> false false and nil --> false false or nil --> nil 10 and 20 --> 20