布林運算子

Elixir 中有兩種布林運算子:

  • 布林運算子(他們希望 truefalse 作為他們的第一個引數)
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,這意味著只有 truefalsenil 不是布林值)。

iex(1)> false and 1 # return false
iex(2)> false or 1 # return 1 
iex(3)> nil and 1 # raise (ArgumentError) argument error: nil
  • 放鬆的布林運算子(適用於任何型別,falsenil 都不被視為 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 處理除 nilfalse 之外的所有內容在比較中為真),否則將返回第二個引數。

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

運算子 && 將始終返回第二個引數,如果它是真的。否則將分別返回引數 falsenil

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