Erlang學習筆記(三)Erlang基礎語法
今天看了Erlang程式設計這本書Erlang基礎知識部分,記錄一下學習到的內容,方便以後回憶學習。
1.變數
Erlang的變數是單一賦值變數,一個變數在釋放繫結之前是不能再被新的值繫結。
示例如下:
在這裡X = 1,表明X已經繫結了值1,如果再給它繫結新的值2,那麼此時會報錯。
使用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語法在一些細節上跟其他語言差距還是很明顯的,需要經常寫來提高熟練度。
另附一些模式和他們對應的值:
相關文章
- Erlang學習筆記(二)Erlang基礎語法之If、Case的使用筆記
- [Erlang 學習筆記] Erlang開發建議筆記
- Erlang學習筆記(七)二進位制型與位語法筆記
- erlang學習: erlang版echoserverServer
- Erlang學習筆記(四)模組與函式筆記函式
- Erlang學習筆記(五)記錄與對映組筆記
- Hive學習筆記:基礎語法Hive筆記
- erlang學習: why OTP
- Scala學習筆記(2)-基礎語法筆記
- Kotlin學習筆記-基礎語法Kotlin筆記
- Erlang 之父學習 Elixir 語言的一週
- Go學習筆記 - Go 基礎語法(1)Go筆記
- Go 學習筆記 - Go 基礎語法(2)Go筆記
- [Erlang0016]Erlang三則之HIPESASLMonitor
- Erlang學習筆記(六)順序程式的錯誤處理筆記
- Html 語法學習筆記三HTML筆記
- Python 3 學習筆記之——基礎語法Python筆記
- go 學習記錄--基礎語法Go
- Go 基礎語言學習筆記Go筆記
- Erlang基礎資料結構.對映組資料結構
- 菜鳥學習筆記:Java基礎篇1(基礎語法、物件導向)筆記Java物件
- Java基礎 語法筆記Java筆記
- Java基礎語法筆記Java筆記
- c語言程式基礎學習筆記C語言筆記
- erlang學習: 基於gen_server的echoserver及監控模組Server
- 學習Rust 基礎語法Rust
- markdown學習(基礎語法)
- 真香,理解記憶法學習Python基礎語法Python
- ABAP學習筆記-基礎語法-05-字串的處理(02)筆記字串
- R語言學習筆記:基礎知識R語言筆記
- Go語言核心36講(Go語言基礎知識三)--學習筆記Go筆記
- erlang應用
- Java學習之基礎語法Java
- Erlang語言的作者教你如何入手
- CSS 基礎學習筆記CSS筆記
- node基礎學習筆記筆記
- Web基礎學習筆記Web筆記
- Redis基礎學習筆記Redis筆記