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