Erlang shell中,用句號加空格、tab或回車來結束表達式,%表示注釋的出發點,;隔離子句。模塊是.erl 文件,庫的頭文件.hrl, shell中的編譯時c(),外編譯命令時erlc, 退出shell用q(),或erlang:halt().
變量以大寫字母開頭,且不能重新綁定變量,只能1次性賦值,具有不可變狀態。原子是全局的,不需要宏定義或包括文件,以小寫字母開頭,還可放在單引號內,是極簡表達式。
元組(tuple)是1些數量固定的項目歸組成單1實體{,}, 由因而匿名的,通常在第1個元素上貼標簽,來增加可讀性。提取元組中的值使用模式匹配操作符=,_為匿名變量,多個_沒必要綁定相同的值。但是,_Mode則是常規變量。例如:
2> Family={family,father,mother,son}.
{family,father,mother,son}
3> {_,X,Y,Z}=Family.
{family,father,mother,son}
4> X.
father
5> Y.
mother
6> Z.
Son
記錄(record)是元組的另外一種情勢,可以給元組的各個元素關聯1個名稱。使用記錄的情形:
1) 用1些預先肯定且數量固定的原子表示數據
2) 元素數量和元素名稱不會隨時間改變
3) 大元組中每一個元組有相同的結構
采取#myrecord{k1=v1,k2=v2..}來創建record。
列表(list)形如[,,]可以寄存任意數量的事物。Head可以是任何事物,Tail通常依然是個列表。只要用[…|T]構建1個列表,就應確保T是1個列表。一樣使用模式匹配來提取列表中的元素。列表推導的常規情勢:
[X||Qualifier1,Qualifier2,…]
X是任意1表達式,限定符qualifier可以生成器,位串生成器或過濾器。生成器的寫法
Pattern<- ListExpr
反轉1個列表時,要調用lists:reverse.
Erlang中沒有字符串,字符串是個整數列表,”HelloCloud”是1個列表的簡寫,io:format來指定打印輸出。
映照組(map)是鍵值對的關聯性集合,內部作為有序計劃存儲,適用情形:
1) 鍵不能預知時來表示鍵值對數據結構
2) 存在大量不同鍵來表示數據
3) 效力不重要時的萬能數據結構
4) 自解釋型數據結構
5) 用來表示鍵值解析樹,如xml或配置文件
6) 用Json來通訊
映照組的語法:
#{key1 op val1,key2 op val2,…,KeyN op valN}
#后沒著名稱,op是=>或:=之1。 => 將現有鍵值更新為新值或給映照組增加1個新鍵值對。 :=用于更新。 健不能包括任何變量,值可以包括未綁定變量,在模式匹配成功后綁定。
映照組可以通過io:format 里的~p選項輸出,并用io:read 或file:consult讀取。
Maps:to_json(Map)->Bin 轉化為2進制型json
Maps:from_json(bin)-> Nap, 將2進制json轉化為map
Json與映照組的對應關系:
1) Json數字:Erlang的整數或浮點數
2) Json字符串:Erlang2進制型
3) Json列表:Erlang列表
4) true和false 對應
5) 映照組中的健必須是原子,字符串或2進制型,值必須用JSON的數據類型表示
下一篇 Erlang中的模塊與模式匹配