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

Записи (Record) в Erlang

Erlang имеет дополнительную функцию для создания записей. Эти записи состоят из полей. Например, вы можете define личную запись, которая содержит два поля: id и имя. Затем, в Erlang, вы можете create различные экземпляры этой записи, чтобы define несколько людей с различными именами и 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}.

Пример, приведенный выше, показывает определение записи с двумя полями: id и имя. Запись была constructed следующим образом -

Грамматика

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

Когда вы определяете запись, вы можетеassign значения к различным полям.

Получение значения записи

Чтобы получить доступ к конкретному полю и значению записи, используйте следующую грамматику.

Грамматика

#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"

Обновление значения записи

Обновление значения записи выполняется, изменяя значение конкретного поля и затемassigning the record to a new variable name. Ниже приведены общая грамматика и пример.

Грамматика

#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