📜  Erlang-数据类型

📅  最后修改于: 2020-11-04 05:48:31             🧑  作者: Mango


在任何编程语言中,您都需要使用多个变量来存储各种类型的信息。变量不过是用于存储值的保留内存位置。这意味着在创建变量时,您会在内存中保留一些空间来存储与该变量关联的值。

您可能希望存储各种数据类型的信息,例如字符串,字符,宽字符,整数,浮点数,布尔值等。操作系统根据变量的数据类型分配内存,并确定可以在保留的数据中存储什么记忆。

内置数据类型

Erlang提供了多种内置数据类型。以下是在Erlang中定义的数据类型的列表-

  • 数字-在Erlang中,数字字面量有2种类型,它们是整数和浮点数。

  • 原子-原子是字面量,是带名称的常量。如果原子不是以小写字母开头,或者包含字母数字字符,下划线(_)或@之外的其他字符,则将其括在单引号(’)中。

  • 布尔-Erlang中的布尔数据类型是两个保留的原子:true和false。

  • 位字符串-位字符串用于存储未类型的内存区域。

  • 元组-元组是具有固定数量项的复合数据类型。元组中的每个术语称为元素。元素的数量被称为元组的大小。

  • 映射-映射是具有可变数量的键-值关联的复合数据类型。映射中的每个键-值关联称为关联对。该对中的键和值部分称为元素。关联对的数量被称为地图的大小。

  • 列表-列表是具有可变项数的复合数据类型。列表中的每个术语称为一个元素。元素的数量被称为列表的长度。

注意-您会惊讶地发现在上面列表中的任何地方都看不到String类型。那是因为没有在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]

元组

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

在这里,我们定义一个具有3个项的元组P。 tuple_size是用Erlang定义的内置函数,可用于确定元组的大小。

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

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

上面程序的输出将是-

输出

3

地图

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

在这里,我们定义了具有2个映射的Map M1map_size是用Erlang定义的内置函数,可用于确定地图的大小。

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

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

上面程序的输出将是-

输出

2

清单

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

在这里,我们定义了一个包含3个项目的列表L。长度是用Erlang定义的内置函数,可用于确定列表的大小。

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

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

上面程序的输出将是-

输出

3