真相表
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