Erlang 數(shù)據(jù)類型

在任何編程語言中,都需要使用多個變量來存儲各種類型的信息。變量只是用來存儲值的保留內(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)容。

內(nèi)置數(shù)據(jù)類型

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ù)字

以下程序顯示了如何使用數(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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清