3.3 逻辑运算符

and    or     not

逻辑运算符认为falsenil是假(false),其他为真,0也是true.

andor的运算结果不是truefalse,而是和它的两个操作数相关。

a and b       -- 如果afalse,则返回a,否则返回b

a or  b        -- 如果atrue,则返回a,否则返回b

例如:

print(4 and 5)           --> 5

print(nil and 13)        --> nil

print(false and 13)      --> false

print(4 or 5)            --> 4

print(false or 5)        --> 5

一个很实用的技巧:如果xfalse或者nil则给x赋初始值v

x = x or v

等价于

if not x then

    x = v

end

and的优先级比or高。

 

C语言中的三元运算符

a ? b : c

Lua中可以这样实现:

(a and b) or c

 

not的结果只返回false或者true

print(not nil)           --> true

print(not false)         --> true

print(not 0)             --> false

print(not not nil)       --> false


相关链接:
lua程序设计目录 - 中国lua开发者 - lua论坛