在Lua中,邏輯運(yùn)算符包括 and、or 和 not。它們用于對(duì)布爾值進(jìn)行邏輯運(yùn)算。
and運(yùn)算符:
當(dāng)同時(shí)滿足兩個(gè)表達(dá)式時(shí),返回第二個(gè)表達(dá)式的值;否則,返回第一個(gè)表達(dá)式的值。如果第一個(gè)表 達(dá)式的值為false或nil,則直接返回該值;否則,返回第二個(gè)表達(dá)式的值。代碼示例:
local a = true
local b = false
local c = nil
local d =true
print(a and d) -- 輸出 true
print(a and b) -- 輸出 false
print(b and a) -- 輸出 false
print(a and c) -- 輸出 nil
print(c and a) -- 輸出 nil
and 簡(jiǎn)單記憶法: a 為 true 返回 b ,a 為 false ,返回 a
:邏輯運(yùn)算符將 false 和 nil 視為假,其他均視為真,0也視為真。
nil 在 lua 中表示一個(gè)無(wú)效值或 空值。在表達(dá)式中則表示 false。 假如一個(gè)變量沒(méi)有賦值前,那么他的值則為 nil。
or運(yùn)算符:
當(dāng)至少有一個(gè)表達(dá)式滿足條件時(shí),返回第一個(gè)滿足條件的表達(dá)式的值;否則,返回最后一個(gè)表達(dá)式的值。如果第一個(gè)表達(dá)式的值為 true 或 nil,則直接返回該值;否則,返回第二個(gè)表達(dá)式的值。 代碼示例:
local a = true
local b = false
local c = nil
print(a or b) -- 輸出 true
print(b or a) -- 輸出 true
print(a or c) -- 輸出 true
print(c or a) -- 輸出 true
or簡(jiǎn)單記憶法: a 為 true 返回 a ,a 為 false ,返回 b
not運(yùn)算符:
用于對(duì)一個(gè)表達(dá)式進(jìn)行取反操作,如果表達(dá)式的值為 false 或 nil,則返回 true ;否則,返回 false。代碼示例:
local a = true
local b = false
local c = nil
print(not a) -- 輸出 false
print(not b) -- 輸出 true
print(not c) -- 輸出 true
and 與 or 優(yōu)先級(jí)
當(dāng)一行代碼同時(shí)出現(xiàn)and與or的時(shí)候,先進(jìn)行and操作。
print(true or false and false) -- 輸出true
and和or 簡(jiǎn)化判斷邏輯
需要注意的是,and 和 or 運(yùn)算符在進(jìn)行邏輯運(yùn)算時(shí)是短路的,即如果第一個(gè)表達(dá)式的值已經(jīng)能夠確定整個(gè)表達(dá)式的結(jié)果,就不再計(jì)算第二個(gè)表達(dá)式。這可以用來(lái)簡(jiǎn)化判斷邏輯。 例如:
local a = 10
local b = nil
local c = 20
local result = a and b -- 如果a為false或nil,則直接返回a的值,否則返回b的值
print(result) -- 輸出 nil
local result = a or c -- 如果a為true或nil,則直接返回a的值,否則返回c的值
print(result) -- 輸出 10