在任何编程语言中,都需要使用多个变量来存储各种类型的信息。变量只是用来存储值的保留内存位置。这意味着,当您创建一个变量时,您会在内存中保留一些空间来存储与该变量关联的值。
您可能喜欢存储各种数据类型的信息,如字符串、字符、宽字符、整数、浮点、布尔等。操作系统根据变量的数据类型分配内存并决定可以在保留内存中存储的内容。
Erlang提供了多种内置数据类型。以下是在Erlang中定义的数据类型的列表-
Number(数字)?在Erlang中,有两种数字字面量,它们是整数和浮点数。
Atom(原子)?原子是字母,是带有名称的常量。如果原子不是以小写字母开头,或者包含字母数字字符,下划线(_)或@以外的其他字符,则将其括在单引号(')中。
Boolean(布尔) ? Erlang中的布尔数据类型是两个保留的原子:true和false。
Bit String (位串)?使用位串存储未类型的内存区域。
Tuple(元组)?元组是具有固定数量项的复合数据类型。元组中的每个术语称为元素。元素的数量被称为元组的大小。
Map(映射)?映射是具有可变数量的键-值关联的复合数据类型。映射中的每个键值关联都称为关联对。该对中的键和值部分称为元素。关联对的数量被称为映射的大小。
List(列表)?列表是具有可变项数的复合数据类型。列表中的每个术语称为一个元素。元素的数量被称为列表的长度。
注意?您会惊讶地发现在上面列表中的任何地方都看不到String类型。这是因为没有在Erlang中专门定义的字符串数据类型。但是在下一章中,我们将看到如何使用字符串。
以下是如何使用每种数据类型的示例。同样,每种数据类型将在随后的章节中详细讨论。这只是为了使您熟悉上述数据类型的简要说明。
以下程序显示了如何使用数字数据类型的示例。该程序显示了2个整数的加法。
-module(helloworld). -export([start/0]). start() -> io:fwrite("~w",[1+1]).
上面程序的输出将是
2
原子应以小写字母开头,并且可以包含小写和大写字符,数字,下划线(_)和“ at”符号(@)。我们还可以将原子括在单引号中。
下面的程序中显示了如何使用atom数据类型的示例。在这个程序中,我们正在创建一个名为atom1的原子。
-module(helloworld). -export([start/0]). start() -> io:fwrite(atom1).
上面程序的输出将是
atom1
以下程序显示了如何使用布尔数据类型的示例。本示例在2个整数之间进行比较,并将结果布尔值输出到控制台。
-module(helloworld). -export([start/0]). start() -> io:fwrite(2 =< 3).
上面程序的输出将是-
Output
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 M1。 map_size是用Erlang定义的内置函数,可用于确定地图的大小。
-module(helloworld). -export([start/0]). start() -> M1 = #{name=>john,age=>25}, io:fwrite("~w",[map_size(M1)]).
上面程序的输出将是:
2
以下程序显示了如何使用List数据类型的示例。
在这里,我们定义了一个List L,它包含3个项目。用Erlang定义的内置 length函数,可用于确定列表的大小。
-module(helloworld). -export([start/0]). start() -> L = [10,20,30] , io:fwrite("~w",[length(L)]).
上面程序的输出将是:
3