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