Erlang數據類型

任何編程語言,則需要使用變量來存儲各種類型的信息。變量是存儲器保留位置用來存儲數據值。這意味着,當你創建一個變量時在內存預留一些空間來存儲變量相關的數據值。

我們可能會存儲各種數據類型,如字符串,字符,寬字符,整數,浮點數,布爾等信息。基於變量的數據類型,操作系統分配內存,並決定什麼可以存儲在保留的存儲器位置中。

內置數據類型

Erlang提供了多種內置數據類型。以下是是在 Erlang 中定義的數據類型的列表 -

  • 數字 − 在 Erlang 中,有兩種類型的數字類型:整數和浮點數; 

  • 原子 − 原子是文字,一個常數的名稱。原子被封閉在單引號('),如果它不以小寫字母開頭,或者如果它包含其它字符不是字母數字字符,下劃線(_)或 @。

  • 布爾 − 在 Erlang 中布爾數據類型是兩個保留原子:true 和 false;

  • 位字符串 − 字節序列用來存儲非類型化的內存區域;

  • 元組 − 元組是具有固定數量的混合數據類型的術語。在元組中的每一項稱爲一個元素。元素的數量被認爲是元組的大小;

  • 映射 − 映射是用 鍵-值關聯的可變數量的複合數據類型。映射中的每個鍵值關聯稱爲關聯對。鍵值對的部分被稱爲元素。關聯對(鍵-值)的數目被認爲是映射的大小;

  • 列表 − 列表是由可變數量的混合數據類型組成。列表中的每個項被稱爲一個元素。元素的數量被認爲是列表的長度。

注 - 你會驚奇地看到,看不到上面列表中的字符串的類型。這是因爲在 Erlang 中是完全沒有定義字符串數據類型的。但是,我們將在後面的章節中看到如何處理字符串。下面是每個數據類型使用的例子。每個數據類型將詳細在隨後的章節中進行討論。

數字

數字的數據類型如何使用的例子將在下面的程序中演示。該程序顯示了 2 個整數的相加。

示例

-module(helloworld).
-export([start/0]).

start() ->
io:fwrite("~w",[1+1]).

執行上面的程序,輸出結果如下:

2

原子類型

原子必須以小寫字母開頭,並且可以包含大寫和小寫字母,數字,下劃線(_)和「at」符號(@)。我們還可以在單引號中使用原子。

原子數據類型如何使用的例子如下面的程序中所示。在這個程序中,我們正在創建一個原子被稱爲 atom1 。

示例

-module(helloworld).
-export([start/0]).

start() ->
io:fwrite(atom1).

執行上面的程序,輸出結果如下:

atom1

布爾值

布爾數據類型使用的例子如下面的程序所示。這個例子是比較 2 個整數的值,並打印生成的布爾值到控制檯。

示例

-module(helloworld).
-export([start/0]).

start() ->
io:fwrite(2 =< 3).

執行上面的程序,輸出結果如下:

true

位字符串

位字符串數據類型如何使用的例子,如下面的程序所示。這個程序定義一個位字符串由2個比特位組成。binary_to_list 是 Erlang 中定義的一個內置函數,可以用於將一個位字符串轉換爲列表。

示例

-module(helloworld).
-export([start/0]).

start() ->
Bin1 = <<10,20>>,
X = binary_to_list(Bin1),
io:fwrite("~w",[X]).

執行上面的程序,輸出結果如下: 

[10,20]

元組

元組數據類型如何使用的例子,如下面的程序中所示。在這裏,我們定義一個元組 P,並有3項數據。tuple_size是在 Erlang 中定義的一個內置函數,它是用來確定一個元組的大小。

示例

-module(helloworld).
-export([start/0]).

start() ->
P = {john,24,{june,25}} ,
io:fwrite("~w",[tuple_size(P)]).

執行上面的程序,輸出結果如下: 

3

映射

如何使用映射(Map)數據類型如下面的程序中所示的例子。在這裏,我們定義一個Map M1 有 2 個映射。map_size是在 Erlang 中定義一個內置函數,它是用來確定一個映射的大小。

示例

-module(helloworld).
-export([start/0]).

start() ->
M1 = #{name=>john,age=>25},
io:fwrite("~w",[map_size(M1)]).

執行上面的程序,輸出結果如下: 

2

列表

列表數據類型如何使用的例子如下面的程序中所示。在這裏,我們定義一個列表L,它有 3 個數據項。length 是在 Erlang 中定義一個內置函數,它是用來確定該列表的大小。

示例

-module(helloworld).
-export([start/0]).

start() ->
L = [10,20,30] ,
io:fwrite("~w",[length(L)]).

執行上面的程序,輸出結果如下: 

3