有三種運算-and、or、not:
除了用在 if...then...end 的判斷式裡,還能用來為參數賦值:
在 lua 裡, nil 和 false 都視為 false,其它都是 true 。
and:當第一個參數的運算結果為 nil 或 false ,會直接回傳第一個值;
結果為 ture ,才會運算第二個參數,屆時無論第二個參數結果為何,都
回傳第二個參數。
如:
nil and 10 --> nil
false and error() --> false
false and nil --> false
10 and 20 --> 20
or:當第一個參數的運算結果為 true ,會直接回傳第一個值,結束運算,
結果為 nil 或 false ,才會運算第二個參數,屆時無論第二個參數結果
為何,都回傳第二個參數。
如:
10 or 20 --> 10
10 or error() --> 10
nil or "a" --> "a"
false or nil --> nil
not:一元運算,取反。當運算結果為 nil 或 false ,回傳 true;
為 true ,回傳 false 。
如:
not a -->true
not 1 -->false
not 'a' -->false
利用上列特性,在為變數賦值時,如:
if a == nil then
a = 0
end
上例可以用not:
if not a then
a = 0
end
因為 a 尚未被賦值,內容是 nil ,用 not 運算得 true ,執行 a = 0。
更簡易的寫法:
a = nil or 0
因為 a 尚未被賦值,內容是nil,用 or 運算得 false ,執行 a = 0。