在Lua中合理使用and,or,not可提高代码效率,减少代码量,增加可读性。
Lua逻辑运算符and,or,not规则如下:
设定 A 的值为 true,B 的值为 false:
操作符 | 描述 | 实例 |
and | 逻辑与操作符。 若 A 为 true,则返回 B;若A为false,则返回A。 | (A and B) 为 false。 |
or | 逻辑或操作符。 若 A 为 true,则返回 A,若A为false,则返回 B。 | (A or B) 为 true。 |
not | 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 | not(A and B) 为 true。 |
优先级and>or,意味着当一行代码同时出现and与or的时候,先进行and操作。
A or B and C == A or (B and C)
例子:
print('---------------and--------------------')
print(true and true)
print(true and false)
print(false and true)
print(false and false)
print('---------------or---------------------')
print(true or true)
print(true or false)
print(false or true)
print(false or false)
print('--------------not---------------------')
print(not(true))
print(not(false))
print('------------and,or-------------------')
print(true or false and false)
输出:
lua三目运算符:
ret = a > b and a or b
a>b时:a>b and a or b----->a or b----->a
a<=b时:a>b and a or b ----->a>b or b----->b
lua并不能完全实现三目运算符
-
三目运算的一般形式a ? b : c
a = true,结果为b
a = false,结果为c -
对应Lua中的a and b or c
- b = true
- a = true
- a and b –> true
- b or c –> b
- a = false
- a and b –> false
- b or c –> c
- a = true
- b = false
- a = true
- a and b –> false
- b or c –> c
- a = false
- a and b –> false
- b or c –> c
- a = true
- b = true
由此可见,lua要想实现三目运算符要注意