一:變量
1. erlang中的變量【單一賦值】,意味著變量只能賦值一次。
2.變量必須【大寫字母】開頭。
二:原子
原子相當(dāng)于c++中的枚舉類型,但erlang中的原子的值是其本身。
原子是一串以【小寫字母】開頭的,但如果用單引號引起來,原子的命名就無所謂了,很多花樣就出來了。如果首字符是正軌的小寫字母,則原子的值是引號內(nèi)的內(nèi)容,否則輸出的值包含單引號。
三:元組(tuple)
有很多項組成一個單一的實體,類似于c++中的結(jié)構(gòu)體之類的,在erlang中要用元組表示;
將若干個以【逗號】分隔的值用【花括號】括起來就是一個元組。
{rex,1.71} 這個元組包含一個原子和一個浮點值。元組與c++中的結(jié)構(gòu)比起來是匿名的,但erlang中不能以點號來操作,創(chuàng)建一個元組就是直接給一個變量綁定一個元組,因為元組中的元素沒有名字,所以只能我們記住這些元素的用處。通常情況下我們用一個原子作為元組的第一個元素來表明這個元組所代表的含義。
{point,10,45}來代替{10,45},這是一種編程風(fēng)格。
元組可以嵌套。譬如:
復(fù)制代碼 代碼如下:
Person={person,
{name,rex},
{height,1.72},
{footsize,43},
{eyecolor,brown}}.
表示一組人的信息,注意是使用原子作為標(biāo)簽。
元組聲明即自動創(chuàng)建,不再使用就隨之銷毀,有垃圾回收。
新元組引用了一個已綁定的變量,那就會享有這個變量引用的數(shù)據(jù)結(jié)構(gòu)。應(yīng)用沒定義的變量會出錯!
例子:
復(fù)制代碼 代碼如下:
F = {firstname,rex}.
L = {lastname,yuan}.
P = {person,F,L}.
p的值就是{person,{firstname,rex},{lastname,yuan}}
=不是賦值,是模式匹配,是erlang的基礎(chǔ)。
如果想從元組中提取內(nèi)容:
聲明一個相同類型的元組,要取的值用變量來代替,變量哦!??!然后用=模式匹配去取出來對應(yīng)變量的值
例如:
復(fù)制代碼 代碼如下:
Point = {point,10,43}.
{point,X,Y} = Point.
X和Y的值分別就為10,43.
位于等號兩邊的元組必須含有相同數(shù)量的元素,注意模式匹配。如果有復(fù)雜的元組想提取內(nèi)容,可以使用相同結(jié)構(gòu)的模式來提取,需要提取的字段位置必須要用未綁定的變量,切記?。〔桓信d趣的可以用占位符“_"來替代,其為匿名變量。在同一個模式中的不同地方,占位符綁定的值不必相同。
四:列表
1:將若干個以【逗號】分隔的值用一個【方括號】括起來就是一個列表了,注意和元組的區(qū)別。
元組是以花括號,列表是以方括號。
列表中的元素可以有各自不同的類型。例如:[1+2,hello,2-2,{cost,apple,30-20},3]
列表的首元素稱為列表的頭,剩余的全部為列表的尾(tail),列表的頭可以是任何東西,但尾一般還是一個列表。訪問列表頭的操作非常高效。很多列表處理函數(shù)都是對頭開始進行處理。
[]是個空列表,[H|T]是以H為頭,以T為尾的列表?!皘”可以將列表頭與尾分隔。最好保證T為正軌列表。添加列表內(nèi)容一般用前插操作,可以一下插很多個元素。
2:提取列表元素
以模式匹配為基礎(chǔ)來提取。
五:字符串
erlang中沒有字符串,字符串其實是一個整數(shù)列表。
用雙引號括起來就是一個字符串。
復(fù)制代碼 代碼如下:
Name=“Rex”
必須使用雙引號。shell打印一串列表值的時候,只有列表中的所有整數(shù)都是可打印字符時,才把這個列表當(dāng)作字符串。有一個不是就不行。
可以用“$"符號來表示字符的整數(shù)值,其實就是ASCII碼,$s就是115,
注意字符集,確認(rèn)顯示終端和區(qū)域設(shè)定問題,在這個問題上 erlang沒有任何辦法解決亂碼問題。