English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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,另一个是名称。另外,记录是通过以下方式构造的-
#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]).
上記の例では、次の点に注意してください-
まず、nameとaddressというフィールド値を持つ人間のレコードを生成します。
次に、personというフィールドとidというフィールドを持つ従業員レコードを定義します。
上記プログラムの出力は以下の通りです。
1