Учебники

Эрланг — Рекорды

Эрланг имеет дополнительные возможности для создания записей. Эти записи состоят из полей. Например, вы можете определить личную запись, которая имеет 2 поля, одно — идентификатор, а другое — поле имени. В Erlang вы можете создать различные экземпляры этой записи, чтобы определить нескольких людей с разными именами и идентификаторами.

Давайте рассмотрим, как мы можем работать с записями.

Создание записи

Запись создается с использованием идентификатора записи. В этом идентификаторе записи вы указываете различные поля, которые составляют запись. Общий синтаксис и пример приведены ниже.

Синтаксис

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

параметры

  • имя записи — это имя, данное записи.

  • Field1, Field2 ..Fieldn — это список различных полей, которые составляют запись.

имя записи — это имя, данное записи.

Field1, Field2 ..Fieldn — это список различных полей, которые составляют запись.

Возвращаемое значение

Никто

Например

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

start() -> 
   P = #person{name="John",id = 1}.

В приведенном выше примере показано определение записи с 2 полями, одно из которых является идентификатором, а другое — именем. Кроме того, запись строится следующим образом —

Синтаксис

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

Где вы присваиваете значения соответствующим полям, когда определен экземпляр записи.

Доступ к значению записи

Для доступа к полям и значениям конкретной записи следует использовать следующий синтаксис.

Синтаксис

#recordname.Fieldname

параметры

  • имя записи — это имя, данное записи.

  • Имя поля — это имя поля, к которому необходимо получить доступ.

имя записи — это имя, данное записи.

Имя поля — это имя поля, к которому необходимо получить доступ.

Возвращаемое значение

Значение, присвоенное полю.

Например

Live Demo

-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

параметры

  • имя записи — это имя, данное записи.

  • Имя поля — это имя поля, к которому необходимо получить доступ.

  • newvalue — это новое значение, которое должно быть присвоено полю.

имя записи — это имя, данное записи.

Имя поля — это имя поля, к которому необходимо получить доступ.

newvalue — это новое значение, которое должно быть присвоено полю.

Возвращаемое значение

Новая запись с новыми значениями, присвоенными полям.

Например

Live Demo

-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”

Вложенные записи

У Эрланга также есть возможность иметь вложенные записи. В следующем примере показано, как можно создавать эти вложенные записи.

Например

Live Demo

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

Сначала мы создаем запись о человеке, которая имеет значения полей имени и адреса.

Затем мы определяем запись сотрудника, в которой этот человек представлен как поле и дополнительное поле с именем id.

Выход

Вывод вышеуказанной программы выглядит следующим образом.