2.5.3 - 逻辑操作符

Lua 中的逻辑操作符有 and, or, 以及 not。 和控制结构(参见 §2.4.4)一样, 所有的逻辑操作符把 falsenil 都作为假, 而其它的一切都当作真。

取反操作 not 总是返回 falsetrue 中的一个。 与操作符 and 在第一个参数为 falsenil 时 返回这第一个参数; 否则,and 返回第二个参数。 或操作符 or 在第一个参数不为 nil 也不为 false 时, 返回这第一个参数,否则返回第二个参数。 andor 都遵循短路规则; 也就是说,第二个操作数只在需要的时候去求值。 这里有一些例子:

     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

(在这本手册中, --> 指前面表达式的结果。)