布林運算子
Elixir 中有兩種布林運算子:
- 布林運算子(他們希望
true
或false
作為他們的第一個引數)
x or y # true if x is true, otherwise y
x and y # false if x is false, otherwise y
not x # false if x is true, otherwise true
如果第一個引數不是嚴格的布林值,那麼所有布林運算子都會提升 ArgumentError
,這意味著只有 true
或 false
(nil
不是布林值)。
iex(1)> false and 1 # return false
iex(2)> false or 1 # return 1
iex(3)> nil and 1 # raise (ArgumentError) argument error: nil
- 放鬆的布林運算子(適用於任何型別,
false
和nil
都不被視為true
)
x || y # x if x is true, otherwise y
x && y # y if x is true, otherwise false
!x # false if x is true, otherwise true
運算子||
將始終返回第一個引數,如果它是真實的(Elixir 處理除 nil
和 false
之外的所有內容在比較中為真),否則將返回第二個引數。
iex(1)> 1 || 3 # return 1, because 1 is truthy
iex(2)> false || 3 # return 3
iex(3)> 3 || false # return 3
iex(4)> false || nil # return nil
iex(5)> nil || false # return false
運算子 &&
將始終返回第二個引數,如果它是真的。否則將分別返回引數 false
或 nil
。
iex(1)> 1 && 3 # return 3, first argument is truthy
iex(2)> false && 3 # return false
iex(3)> 3 && false # return false
iex(4)> 3 && nil # return nil
iex(5)> false && nil # return false
iex(6)> nil && false # return nil
&&
和||
都是短路運算子。如果左側不足以確定結果,它們僅執行右側。
運算子 !
將返回當前項的否定的布林值:
iex(1)> !2 # return false
iex(2)> !false # return true
iex(3)> !"Test" # return false
iex(4)> !nil # return true
獲取所選術語的布林值的簡單方法是簡單地將此運算子加倍:
iex(1)> !!true # return true
iex(2)> !!"Test" # return true
iex(3)> !!nil # return false
iex(4)> !!false # return false