真相表
Lua 中的逻辑运算符不会返回布尔值,而是它们的一个参数。使用 nil
表示 false,将数字表示为 true,这是它们的行为方式。
print(nil and nil) -- nil
print(nil and 2) -- nil
print(1 and nil) -- nil
print(1 and 2) -- 2
print(nil or nil) -- nil
print(nil or 2) -- 2
print(1 or nil) -- 1
print(1 or 2) -- 1
如你所见,Lua 将始终返回使检查失败或成功的第一个值。这是真相表,显示了这一点。
x | y || and x | y || or
------------------ ------------------
false|false|| x false|false|| y
false|true || x false|true || y
true |false|| y true |false|| x
true |true || y true |true || x
对于那些需要它的人来说,这里有两个代表这些逻辑运算符的函数。
function exampleAnd(value1, value2)
if value1 then
return value2
end
return value1
end
function exampleOr(value1, value2)
if value1 then
return value1
end
return value2
end