Erlang - 数据类型
在任何编程语言中,都需要使用多个变量来存储各种类型的信息。 变量只不过是用于存储值的保留内存位置。 这意味着当您创建变量时,您会在内存中保留一些空间来存储与该变量关联的值。
您可能想要存储各种数据类型的信息,如字符串、字符、宽字符、整数、浮点、布尔值等。操作系统根据变量的数据类型分配内存并决定保留内存中可以存储什么内容。
内置数据类型
Erlang 提供了多种内置数据类型。 以下是 Erlang 中定义的数据类型列表 −
数字 − 在 Erlang 中,有两种类型的数字文字:整数和浮点数。
原子 − 原子是一个文字,一个有名字的常量。 如果原子不以小写字母开头或者包含除字母数字字符、下划线 (_) 或 @ 之外的其他字符,则原子将用单引号 (') 括起来。
布尔 − 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]
元组
以下程序显示了如何使用元组数据类型的示例。
这里我们定义一个元组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
列表
以下程序显示了如何使用列表数据类型的示例。
这里我们定义了一个包含 3 个项目的 List L。 length是Erlang中定义的内置函数,可用于确定列表的大小。
示例
-module(helloworld). -export([start/0]). start() -> L = [10,20,30] , io:fwrite("~w",[length(L)]).
上述程序的输出将是 −
输出
3