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