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