LUA教程表达式逻辑运算符-10

and    or     not

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

and和or的运算结果不是true和false,而是和它的两个操作数相关。

a and b       -- 如果a为false,则返回a,否则返回b
a or  b        -- 如果a为true,则返回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
 
     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

一个很实用的技巧:如果x为false或者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

发布日期:

所属分类: 编程 标签:


没有相关文章!