總的來說就是,and返回導致返回值為false的那個值。a and b,如果a為假就返回a,否則返回b。 or的用法就是返回導致true的那個, a and b,如果a為真就返回a,否則返回b.
邏輯運算子認為false和nil是假(false),其他為真,0也是true.
and的優先順序比or高
其它語言中的and表示兩者都為真的時候,才返回為真,而只要有乙個假,都返回假.lua雖不僅返回假的語義,還返回導致假的值.也就是說
a and b
在a為false的時候,返回a,否則返回b.
or的處理與之類似,
a or b
在a為true的時候,返回a,否則返回b.
總之,and與or返回的不僅有true/false的語義,還返回了它的值.
a = nil
b = 1
exp = 1 < 2 and a or b
print(exp == a) --fales
exp = 1 > 2 and a or b
print(exp == b) --true
exp = (1 < 2 and or )[1]
print(exp == a) --true
exp = (1 > 2 and or )[1]
print(exp == b) --true
a = nil
b = 1
exp = 1 < 2 and a or b
print(exp == a) --fales
exp = 1 > 2 and a or b
print(exp == b) --true
exp = (1 < 2 and or )[1]
print(exp == a) --true
exp = (1 > 2 and or )[1]
print(exp == b) --true
false
true
true
true
不過正確的方案書寫太過複雜,反而弄巧成拙。lua中沒有提供語言內建的支援,還是轉向正常的if/else吧。
當然,如果編碼者能夠斷言c and a or b中的a一定為真,那直接用這種寫法也不會錯,但這就是乙個hack了,不值得推崇。
lua 邏輯運算子小結
lua中的邏輯運算子,認為只有false nil為假,其他的都為真 包括0 空串 a and b 如果a為false,則返回a,否則返回b a or b 如果a為true,則返回a,否則返回b 1 print 4 and5 52 print nil and12 nil3 print false an...
lua中邏輯運算子and與or的用法
總的來說就是,and返回導致返回值為false的那個值。a and b,如果a為假就返回a,否則返回b。or的用法就是返回導致true的那個,a and b,如果a為真就返回a,否則返回b.邏輯運算子認為false和nil是假 false 其他為真,0也是true.and的優先順序比or高 其它語言...
php位運算子與邏輯運算 php 邏輯運算子 和
在php中,邏輯運算子無非是將值進行邏輯運算。還有其它用法嗎?先看看以下的 吧。提前給出結論就是 or 這兩種運算子在程式中可以加快php 的執行速度。test 李四 test 張三 test 張三來了 echo test 輸出 李四 test 李四 test 張三 test 張三不在這裡 echo...