当前位置: 首页 > 文档资料 > Erlang 中文教程 >

记录( Records)

优质
小牛编辑
126浏览
2023-12-01

Erlang有额外的工具来创建记录。 这些记录由字段组成。 例如,您可以定义一个包含2个字段的个人记录,一个是id,另一个是name字段。 在Erlang中,您可以创建此记录的各种实例,以定义具有各种名称和ID的多个人。

让我们探讨如何使用记录。

创建记录

使用记录标识符创建记录。 在此记录标识符中,您指定构成记录的各个字段。 一般语法和示例如下。

语法 (Syntax)

record(recordname , {Field1,Field2 ..Fieldn})

参数 (Parameters)

  • recordname - 这是给记录的名称。

  • Field1,Field2 ..Fieldn - 这些是构成记录的各个字段的列表。

返回值 (Return Value)

没有

例如 (For example)

-module(helloworld). 
-export([start/0]). 
-record(person, {name = "", id}). 
start() -> 
   P = #person{name="John",id = 1}.

上面的示例显示了包含2个字段的记录的定义,一个是id,另一个是名称。 此外,记录按以下方式构建 -

语法 (Syntax)

#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}

在定义记录实例时,将值分配给相应字段的位置。

访问记录的值

要访问特定记录的字段和值,应使用以下语法。

语法 (Syntax)

#recordname.Fieldname

参数 (Parameters)

  • recordname - 这是给记录的名称。

  • Fieldname - 这是需要访问的字段的名称。

返回值 (Return Value)

分配给该字段的值。

例如 (For example)

-module(helloworld). 
-export([start/0]). 
-record(person, {name = "", id}). 
start() -> 
   P = #person{name = "John",id = 1}, 
   io:fwrite("~p~n",[P#person.id]), 
   io:fwrite("~p~n",[P#person.name]).

输出 (Output)

上述程序的输出如下。

1
“John”

更新记录的值

通过将值更改为特定字段然后将记录分配给新变量名来完成记录值的更新。 一般语法和示例如下。

语法 (Syntax)

#recordname.Fieldname = newvalue

参数 (Parameters)

  • recordname - 这是给记录的名称。

  • Fieldname - 这是需要访问的字段的名称。

  • newvalue - 这是需要分配给字段的新值。

返回值 (Return Value)

具有分配给字段的新值的新记录。

例如 (For example)

-module(helloworld). 
-export([start/0]). 
-record(person, {name = "", id}). 
start() -> 
   P = #person{name = "John",id = 1}, 
   P1 = P#person{name = "Dan"}, 
   io:fwrite("~p~n",[P1#person.id]), 
   io:fwrite("~p~n",[P1#person.name]).

输出 (Output)

上述计划的输出如下 -

1
“Dan”

嵌套记录

Erlang还具有嵌套记录的功能。 以下示例显示如何创建这些嵌套记录。

例如 (For example)

-module(helloworld). 
-export([start/0]). 
-record(person, {name = "", address}). 
-record(employee, {person, id}). 
start() -> 
   P = #employee{person = #person{name = "John",address = "A"},id = 1}, 
   io:fwrite("~p~n",[P#employee.id]).

在上面的例子中,需要注意以下事项 -

  • 我们首先创建一个人的记录,其中包含姓名和地址的字段值。

  • 然后,我们定义一个员工记录,其中该人员为字段,另一个字段为id。

输出 (Output)

上述程序的输出如下。

1