Elixir - 雜項運算子



除了上述運算子外,Elixir 還提供了一系列其他運算子,使其成為一種功能強大的語言。

連線運算子

Elixir 提供了一個字串連線運算子,“<>”。它用於連線兩個字串。例如:

IO.puts("Hello"<>" "<>"world")

以上命令產生以下結果:

Hello World

匹配

匹配運算子“=”使用了該語言的模式匹配特性。我們將在後續關於模式匹配的章節中詳細討論此運算子。

請注意,“=”不僅是賦值運算子。當左值是變數,右值是字面量或另一個變數時,右邊的值將繫結到變數,即進行賦值。但是,如果右邊是變數,左邊是字面量,則會發生模式匹配。當兩個值都是字面量時也是如此。

固定

固定運算子“^”是一個一元運算子,用於在變數名前新增字首。它確保在與匹配運算子一起使用時,該變數不會被賦值,而是與該值匹配。例如:

a = 12  #assignment
a = 13  #assignment
^a = 13  #Pattern matching

管道

管道運算子“|>”的工作方式類似於 Unix shell 中的管道運算子。它允許我們將一個函式的輸出傳遞到另一個函式。例如,如果我們需要將加法的結果傳遞到 IO.puts,我們將使用:

(4+3) |> IO.puts

執行上述程式時,會產生以下結果:

7

這將識別我們已將加法的結果傳遞到 IO.puts 函式。這將在您的控制檯上列印 7。

字串匹配

字串匹配運算子“=~”在左邊取一個字串,在右邊取一個字串或正則表示式。如果右邊的字串是左邊的子串,則返回 true。如果右邊的正則表示式與左邊的字串匹配,則返回 true。否則返回 false。例如:

IO.puts("tutorialspoint" =~ "poi")  
IO.puts("tutorialspoint" =~ ~r/[a-z]*/)  
IO.puts("tutorialspoint" =~ ~r/[0-9]*/)  

執行上述程式時,會產生以下結果:

true
true
true

請注意,Elixir 中的正則表示式以 '~r' 字首開頭。

程式碼點

它是一個一元運算子“?”,返回其右側字元的 UTF-8 程式碼點。它只能取一個字元並接受轉義序列。例如:

IO.puts(?a)
IO.puts(?\s)

執行上述程式時,會產生以下結果:

97
32

捕獲

捕獲運算子“&”用於定義匿名函式時。我們將在函式章節中詳細討論。

三元運算子

Elixir 沒有三元運算子。我們可以使用 if else 語句實現相同的功能:

a = if true, do: "True!", else: "False!"

包含

此運算子檢查左邊的專案是否存在於右邊的可列舉結構中。例如,我們可以使用此運算子檢查列表、元組等原子中是否存在原子:

:yes in [:true, :false, :yes]

以上語句返回 true,因為 :yes 存在於列表中。

elixir_operators.htm
廣告
© . All rights reserved.