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,另一个是name。 另外,记录是按以下方式构建的 −
语法
#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]).
在上面的例子中需要注意以下几点 −
我们首先创建一个人的记录,其中包含姓名和地址字段值。
然后,我们定义一个员工记录,其中包含人员字段和名为 id 的附加字段。
输出
上述程序的输出如下。
1