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

映射

以下程序显示了如何使用映射数据类型的示例。

这里我们定义了一个映射 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
广告