English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang 레코드(Record)

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

让我们探讨如何处理记录。

创建记录

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

语法

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

参数

  • recordname −这是记录的名字。

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

返回值

没有任何

예를 들어

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

上面的示例显示了具有2个字段的记录的定义,一个是id,另一个是名称。另外,记录是通过以下方式构造的-

语法

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

定义记录实例时,您可以在其中将值分配给各个字段。

访问记录的值

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

语法

#recordname.Fieldname

参数

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

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

返回值

分配给该字段的值。

예를 들어

-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]).

출력

위 프로그램의 출력은 다음과 같습니다.

1
"John"

更新记录的值

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

语法

#recordname.Fieldname = newvalue

参数

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

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

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

返回值

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

예를 들어

-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]).

출력

위 프로그램의 출력은 다음과 같습니다-

1
"Dan"

내장된 레코드

Erlang은 내장된 레코드 기능도 갖추고 있습니다. 아래 예제는 이러한 내장된 레코드를 생성하는 방법을 설명합니다.

예를 들어

-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]).

위 예제에서 주의해야 할 사항은 다음과 같습니다-

  • 우리는 먼저 name과 address 필드 값을 가진 인물 레코드를 생성합니다.

  • 그런 다음 우리는 person 필드와 id 필드가 있는 직원 레코드를 정의합니다.

출력

위 프로그램의 출력은 다음과 같습니다.

1