Эрланг имеет дополнительные возможности для создания записей. Эти записи состоят из полей. Например, вы можете определить личную запись, которая имеет 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
параметры
-
имя записи — это имя, данное записи.
-
Имя поля — это имя поля, к которому необходимо получить доступ.
имя записи — это имя, данное записи.
Имя поля — это имя поля, к которому необходимо получить доступ.
Возвращаемое значение
Значение, присвоенное полю.
Например
-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 — это новое значение, которое должно быть присвоено полю.
Возвращаемое значение
Новая запись с новыми значениями, присвоенными полям.
Например
-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”
Вложенные записи
У Эрланга также есть возможность иметь вложенные записи. В следующем примере показано, как можно создавать эти вложенные записи.
Например
-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.
Выход
Вывод вышеуказанной программы выглядит следующим образом.