Elixir - 運算子



運算子是一個符號,它告訴編譯器執行特定的數學或邏輯操作。Elixir 提供了大量的運算子。它們被分為以下幾類:

  • 算術運算子
  • 比較運算子
  • 布林運算子
  • 其他運算子

算術運算子

下表顯示了 Elixir 語言支援的所有算術運算子。假設變數A為 10,變數B為 20,則:

顯示示例

運算子 描述 示例
+ 加法運算,兩個數字相加。 A + B 將得到 30
- 減法運算,從第一個數字中減去第二個數字。 A - B 將得到 -10
* 乘法運算,兩個數字相乘。 A * B 將得到 200
/ 除法運算,第一個數字除以第二個數字。這會將數字轉換為浮點數並返回浮點結果。 A / B 將得到 0.5。
div 此函式用於獲取除法的商。 div(10, 20) 將得到 0
rem 此函式用於獲取除法的餘數。 rem(A, B) 將得到 10

比較運算子

Elixir 中的比較運算子與大多數其他語言中提供的運算子大多相同。下表總結了 Elixir 中的比較運算子。假設變數A為 10,變數B為 20,則:

顯示示例

運算子 描述 示例
== 檢查左側的值是否等於右側的值(如果型別不同則進行型別轉換)。 A == B 將得到 false
!= 檢查左側的值是否不等於右側的值。 A != B 將得到 true
=== 檢查左側值的型別是否等於右側值的型別,如果是,則檢查值是否相同。 A === B 將得到 false
!== 與上面相同,但檢查的是不相等而不是相等。 A !== B 將得到 true
> 檢查左側運算元的值是否大於右側運算元的值;如果是,則條件為真。 A > B 將得到 false
< 檢查左側運算元的值是否小於右側運算元的值;如果是,則條件為真。 A < B 將得到 true
>= 檢查左側運算元的值是否大於或等於右側運算元的值;如果是,則條件為真。 A >= B 將得到 false
<= 檢查左側運算元的值是否小於或等於右側運算元的值;如果是,則條件為真。 A <= B 將得到 true

邏輯運算子

Elixir 提供 6 個邏輯運算子:and、or、not、&&、|| 和 !。前三個,and or not 是嚴格的布林運算子,這意味著它們期望它們的第一個引數是布林值。非布林引數將引發錯誤。而接下來的三個,&&、|| 和 !是非嚴格的,不需要我們嚴格地將第一個值作為布林值。它們的工作方式與它們的嚴格對應物相同。假設變數A為 true,變數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 的第一個引數為 false,則它不會進一步檢查第二個引數。如果or 的第一個引數為 true,則它不會檢查第二個引數。例如:

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 提供位運算模組作為Bitwise包的一部分,因此為了使用這些運算子,您需要使用位運算模組。要使用它,請在您的 shell 中輸入以下命令:

use Bitwise

對於以下示例,假設 A 為 5,B 為 6:

顯示示例

運算子 描述 示例
&&& 按位與運算子僅當運算元兩者都存在位時,才將該位複製到結果中。 A &&& B 將得到 4
||| 按位或運算子如果位在任一運算元中存在,則將該位複製到結果中。 A ||| B 將得到 7
>>> 按位右移運算子將第一個運算元的位向右移動第二個運算元中指定的位數。 A >>> B 將得到 0
<<< 按位左移運算子將第一個運算元的位向左移動第二個運算元中指定的位數。 A <<< B 將得到 320
^^^ 按位異或運算子僅當位在兩個運算元中不同時,才將該位複製到結果中。 A ^^^ B 將得到 3
~~~ 一元按位非運算子反轉給定數字的位。 ~~~A 將得到 -6

其他運算子

除了上述運算子外,Elixir 還提供一系列其他運算子,如連線運算子、匹配運算子、固定運算子、管道運算子、字串匹配運算子、程式碼點運算子、捕獲運算子、三元運算子,這使得它成為一種非常強大的語言。

顯示示例

廣告