Elixir - 邏輯運算子



Elixir 提供 6 個邏輯運算子:and、or、not、&&、|| 和 !。前三個,and、or、not 是嚴格的布林運算子,這意味著它們期望它們的第一個引數是布林值。非布林引數將引發錯誤。而接下來的三個,&&、|| 和 !是非嚴格的,不需要我們第一個值嚴格為布林值。它們的工作方式與它們的嚴格對應物相同。假設變數A為真,變數B為 20,則:

運算子 描述 示例
and 檢查提供的兩個值是否都為真值,如果是,則返回第二個變數的值。(邏輯與) A and B 將返回 20
or 檢查提供的任何一個值是否為真值。返回任何一個真值。否則返回 false。(邏輯或) A or B 將返回 true
not 一元運算子,反轉給定輸入的值。 not A 將返回 false
&& 非嚴格and。工作方式與and相同,但不期望第一個引數為布林值。 B && A 將返回 20
|| 非嚴格or。工作方式與or相同,但不期望第一個引數為布林值。 B || A 將返回 true
! 非嚴格not。工作方式與not相同,但不期望引數為布林值。 !A 將返回 false

注意 - andor&&|| 是短路運算子。這意味著如果and的第一個引數為假,則它不會進一步檢查第二個引數。如果or的第一個引數為真,則它不會檢查第二個引數。例如:

false and raise("An error")  
#This won't raise an error as raise function wont get executed because of short
#circuiting nature of and operator.

示例

嘗試以下程式碼來理解 Elixir 中的所有算術運算子。

a = true
b = 20

IO.puts("a and b " <> to_string(a and b))

IO.puts("a or b " <> to_string(a or b))

IO.puts("not a " <> to_string(not a))

IO.puts("b && a" <> to_string(b && a))

IO.puts("b || a " <> to_string(b || a))

IO.puts("!a " <> to_string(!a))

以上程式生成以下結果:

a and b 20
a or b true
not a false
b && a true
b || a 20
!a false
elixir_operators.htm
廣告
© . All rights reserved.