Erlang學習筆記(三)Erlang基礎語法

畫船聽雨發表於2017-08-23

今天看了Erlang程式設計這本書Erlang基礎知識部分,記錄一下學習到的內容,方便以後回憶學習。

1.變數

Erlang的變數是單一賦值變數,一個變數在釋放繫結之前是不能再被新的值繫結。
示例如下:
變數賦值
在這裡X = 1,表明X已經繫結了值1,如果再給它繫結新的值2,那麼此時會報錯。
使用f().函式可以釋放繫結值,然後變數可以重新繫結新的值。
示例如下:
f()函式
如此就可以重新賦值了。
變數賦值時,”=”的右邊可以是一個公式。
示例如下:
公式賦值

單一賦值的優勢:
在多核程式設計時,進行共享記憶體的過程中,單一賦值不會造成記憶體中值得修改,從而避免了多核程式設計時資料的不停改變,所以用Erlang來寫併發程式時不用進行加鎖。
缺點:
不夠靈活,每個值佔用一個記憶體會造成開銷較大。

注:所有的變數都是以大寫字母開頭。

2.浮點數

在Erlang中兩個整數使用“/”時自動轉化為浮點數,div 是用於整數的除法,rem是整數的取餘。
樣例如下:
浮點數操作

3.原子

在Erlang中,原子用來表示不同的費非數字常量值。
Erlang中的原子是全域性有效的,而且不需要使用巨集定義或者包含檔案。
原子是一小寫字母開頭,後跟數字,字母,下劃線,或者郵件符號。
例如:“red”、“red_boy”、 “red_boy1”、“red_boy1@”
使用單引號引起的字元也是原子。
例如:’Moday’,’A big boy’
一個原子的值就是原子本身。因此,如果輸入的命令只有原子,那麼Erlang shell會列印那個原子的值。
樣例如下:
原子

4.元組

元組類似於C語言中的結構體,可以儲存不同型別的資料在一個“陣列”中。
元組是可以巢狀的;
樣例如下:
這裡寫圖片描述
當建立的新的元組引用了一個已經繫結了值的變數時,新的元組會共享這個變數的所引用的資料結構。
樣例如下:
這裡寫圖片描述
注意:如果變數未被繫結那麼則不能引用。
從元組中提取資料:
在元組中提取資料我個人感覺是真的麻煩啊!需要將元組賦值給一個新的元組,這個新的元組是由若干部分組成的,這樣拆分出來的每一個部分就可以繫結一個新的值,這樣就完成了資料的提取工作。
樣例如下:
這裡寫圖片描述
這裡寫圖片描述

5.列表

列表感覺就像是把元組組合到了一起,可以包含多種型別的資料。列表在形式上與元組的不同在於,元組在巢狀時最外層是{}包裹的,元組是以[]包裹的。
列表存在表頭與表尾,一般預設第一個元素是表頭,剩下的元素作為表尾。
定義列表:
這裡寫圖片描述
從列表中提取元素:
這裡寫圖片描述

6.字串

嚴格地講,Erlang中並沒有字串,字串實際上就是一個整數列表。用雙引號字元括起來就是一個字串。
注意:在Erlang中字串必須使用雙引號!
這裡寫圖片描述

7.小結

Erlang語法在一些細節上跟其他語言差距還是很明顯的,需要經常寫來提高熟練度。
另附一些模式和他們對應的值:
這裡寫圖片描述

相關文章