逻辑运算
and, or, not
其中,and 和 or 与 C 语言区别特别大。
在这里,请先记住,在 Lua 中,只有 false 和 nil 才计算为 false,其它任何数据都计算为 true,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
在Lua中这是很有用的特性,也是比较令人混洧的特性。
我们可以模拟 C 语言中的语句:
x = a? b : c
在 Lua 中,可以写成:
x = a and b or c
最有用的语句是:
x = x or v
它相当于:
if not x then
x = v
end