开发学院

您的位置:首页>教程>正文

教程正文

Erlang 数据类型

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