Erlang 程式設計/模式匹配
外觀
Erlang 使用強大的模式匹配將變數繫結到值。模式匹配可以是顯式的,例如當使用 =(模式匹配運算子)時,也可以是隱式的,例如當函式呼叫被處理並且函式的實際引數與它的形式引數匹配時。
模式看起來與術語相同 - 它們可以是簡單的字面量,如原子和數字,複合的,如元組和列表,或者兩者的混合。它們還可以包含變數,它們是字母數字字串,以大寫字母或下劃線開頭。一個特殊的“匿名變數”_(下劃線)用於你不關心要匹配的值,並且不會使用它。
如果模式與要匹配的術語具有相同的“形狀”,並且遇到的原子相同,則模式匹配成功。例如,以下匹配成功:[1]
A = 1.1 = 1.{ok, A} = {ok, 42}.[H|T] = [1, 2, 3].
注意,在第四個示例中,管道 (|) 表示列表的頭部和尾部,如 術語 中所述。
這些匹配失敗
1 = 2.{ok, A} = {failure, "不知道問題"}.[H|T] = [].
在模式匹配運算子的情況下,失敗會產生錯誤,並且程序退出。如何在 錯誤 中捕獲和處理錯誤。
模式用於選擇要執行的函式的哪個子句(這將在 函式 中介紹;在 case 表示式中選擇哪個選項 (表示式);以及從郵箱中檢索哪些訊息 (程序)。
Erlang 變數是單賦值變數,不需要宣告。它們用大寫字母或下劃線後跟字母數字序列來編寫。它們使用模式匹配機制繫結到值。如果使用未繫結的變數,Erlang 編譯器將產生錯誤,如果使用繫結的變數,則會發出警告。有時你可能會遇到 _Var 變數。此變數被繫結幷包含一個值,但它會抑制關於未使用的繫結變數的編譯器警告。
- ↑ 由於 Erlang 變數是不可變的,所以將這些示例視為獨立的——即使 A 被使用了兩次,但每次都是一個不同的A!