在任何編程語(yǔ)言中,都需要使用多個(gè)變量來(lái)存儲(chǔ)各種類型的信息。變量只是用來(lái)存儲(chǔ)值的保留內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),您會(huì)在內(nèi)存中保留一些空間來(lái)存儲(chǔ)與該變量關(guān)聯(lián)的值。
您可能喜歡存儲(chǔ)各種數(shù)據(jù)類型的信息,如字符串、字符、寬字符、整數(shù)、浮點(diǎn)、布爾等。操作系統(tǒng)根據(jù)變量的數(shù)據(jù)類型分配內(nèi)存并決定可以在保留內(nèi)存中存儲(chǔ)的內(nèi)容。
Erlang提供了多種內(nèi)置數(shù)據(jù)類型。以下是在Erlang中定義的數(shù)據(jù)類型的列表-
Number(數(shù)字)?在Erlang中,有兩種數(shù)字字面量,它們是整數(shù)和浮點(diǎn)數(shù)。
Atom(原子)?原子是字母,是帶有名稱的常量。如果原子不是以小寫字母開頭,或者包含字母數(shù)字字符,下劃線(_)或@以外的其他字符,則將其括在單引號(hào)(')中。
Boolean(布爾) ? Erlang中的布爾數(shù)據(jù)類型是兩個(gè)保留的原子:true和false。
Bit String (位串)?使用位串存儲(chǔ)未類型的內(nèi)存區(qū)域。
Tuple(元組)?元組是具有固定數(shù)量項(xiàng)的復(fù)合數(shù)據(jù)類型。元組中的每個(gè)術(shù)語(yǔ)稱為元素。元素的數(shù)量被稱為元組的大小。
Map(映射)?映射是具有可變數(shù)量的鍵-值關(guān)聯(lián)的復(fù)合數(shù)據(jù)類型。映射中的每個(gè)鍵值關(guān)聯(lián)都稱為關(guān)聯(lián)對(duì)。該對(duì)中的鍵和值部分稱為元素。關(guān)聯(lián)對(duì)的數(shù)量被稱為映射的大小。
List(列表)?列表是具有可變項(xiàng)數(shù)的復(fù)合數(shù)據(jù)類型。列表中的每個(gè)術(shù)語(yǔ)稱為一個(gè)元素。元素的數(shù)量被稱為列表的長(zhǎng)度。
注意?您會(huì)驚訝地發(fā)現(xiàn)在上面列表中的任何地方都看不到String類型。這是因?yàn)闆]有在Erlang中專門定義的字符串?dāng)?shù)據(jù)類型。但是在下一章中,我們將看到如何使用字符串。
以下是如何使用每種數(shù)據(jù)類型的示例。同樣,每種數(shù)據(jù)類型將在隨后的章節(jié)中詳細(xì)討論。這只是為了使您熟悉上述數(shù)據(jù)類型的簡(jiǎn)要說(shuō)明。
以下程序顯示了如何使用數(shù)字?jǐn)?shù)據(jù)類型的示例。該程序顯示了2個(gè)整數(shù)的加法。
-module(helloworld). -export([start/0]). start() -> io:fwrite("~w",[1+1]).
上面程序的輸出將是
2
原子應(yīng)以小寫字母開頭,并且可以包含小寫和大寫字符,數(shù)字,下劃線(_)和“ at”符號(hào)(@)。我們還可以將原子括在單引號(hào)中。
下面的程序中顯示了如何使用atom數(shù)據(jù)類型的示例。在這個(gè)程序中,我們正在創(chuàng)建一個(gè)名為atom1的原子。
-module(helloworld). -export([start/0]). start() -> io:fwrite(atom1).
上面程序的輸出將是
atom1
以下程序顯示了如何使用布爾數(shù)據(jù)類型的示例。本示例在2個(gè)整數(shù)之間進(jìn)行比較,并將結(jié)果布爾值輸出到控制臺(tái)。
-module(helloworld). -export([start/0]). start() -> io:fwrite(2 =< 3).
上面程序的輸出將是-
Output
true
以下程序顯示了如何使用位字符串?dāng)?shù)據(jù)類型的示例。該程序定義了一個(gè)由2位組成的位字符串。binary_to_list是用Erlang定義的內(nèi)置函數(shù),其可被用于一個(gè)位串轉(zhuǎn)換成列表。
-module(helloworld). -export([start/0]). start() -> Bin1 = <<10,20>>, X = binary_to_list(Bin1), io:fwrite("~w",[X]).
上面程序的輸出將是:
[10,20]
以下程序顯示了如何使用Tuple數(shù)據(jù)類型的示例。
在這里,我們定義一個(gè)具有3個(gè)項(xiàng)的元組P。 tuple_size是用Erlang定義的內(nèi)置函數(shù),可用于確定元組的大小。
-module(helloworld). -export([start/0]). start() -> P = {john,24,{june,25}} , io:fwrite("~w",[tuple_size(P)]).
上面程序的輸出將是-
3
以下程序顯示了如何使用Map數(shù)據(jù)類型的示例。
在這里,我們定義了具有2個(gè)映射的Map M1。 map_size是用Erlang定義的內(nèi)置函數(shù),可用于確定地圖的大小。
-module(helloworld). -export([start/0]). start() -> M1 = #{name=>john,age=>25}, io:fwrite("~w",[map_size(M1)]).
上面程序的輸出將是:
2
以下程序顯示了如何使用List數(shù)據(jù)類型的示例。
在這里,我們定義了一個(gè)List L,它包含3個(gè)項(xiàng)目。用Erlang定義的內(nèi)置 length函數(shù),可用于確定列表的大小。
-module(helloworld). -export([start/0]). start() -> L = [10,20,30] , io:fwrite("~w",[length(L)]).
上面程序的輸出將是:
3