從零衝擊Erlang(三)

今天我要來好好的學習一下Erlang中的基本結構:元組。

在一些Erlang英文文檔或者網絡上的關於Erlang博客中出現的單詞tuple指的就是元組。

元組的定義:元組是Erlang項式的定長的有序序列。元組用大括號{}來表示,來看幾個例子

{1,2,3}

{one,two,three,four}

{from,"Russia","with love"} //題外話,”來自俄羅斯的愛情“ 007主題曲,很好聽

{} //空的


就像上面這樣簡單,這些就是元組,最基本的,最簡單的元組。

同時,元組裏面也可以套入元組

{complex,{nested,"structure",{here}}} //這個元組裏面套了一個,那一個裏面又套了一個


總結一下元組:元組中出現的元素可以是同一類型,也可以是不同的數據類型,這些元素本身也可以是元組或者其他數據類型

在此基礎上,Erlang有個標準約定:用原子作爲第一個元素來標記元組數據的類型,如{size,42},{position,5,2},稱爲標記元組(tagged tuple)

我舉個例子

假如我要表示一個人的信息(姓名,年齡,性別),我可以用元組去表示,{”Michael“,23,"male"},{"Tina",27,”female“},這樣就行了。但是感覺很散,如果我把整個元組作爲參數傳遞給函數,函數如何檢查我傳給它的參數是不是符合它事先約定的要求你,總不能用姓名”MichaelMa“或者年齡23或者性別”male“來判斷吧。所以需要一個標記來標識這個元組,告訴別人這個元組的類型,進而可以這樣優化,{person,”Michael“,23,"male"} , {person,"Tina",27,”female“},你看這樣是不是感覺更好了,函數就可以通過判斷第一個元素的類型來直接判斷參數合不合法。同時把元組作爲函數參數返回也是可以的。


正如C中的struct或者Java中的對象一樣,元組是在Erlang中構造符合數據結構或一次性返回多個結果值的主要手段。

在實際使用中,常記使用標記元組有助於快速提升元組的使用技巧。


列出參考資料:

《Erlang/OTP併發編程實戰》第二章


發佈了87 篇原創文章 · 獲贊 21 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章