Erlang-records
提供:Dev Guides
アーラン-レコード
Erlangには、レコードを作成するための追加機能があります。 これらのレコードはフィールドで構成されています。 たとえば、2つのフィールドを持つ個人レコードを定義できます。1つはIDで、もう1つは名前フィールドです。 Erlangでは、このレコードのさまざまなインスタンスを作成して、さまざまな名前とIDを持つ複数のユーザーを定義できます。
レコードを操作する方法を調べてみましょう。
レコードを作成する
レコードは、レコード識別子を使用して作成されます。 このレコード識別子では、レコードを構成するさまざまなフィールドを指定します。 一般的な構文と例を以下に示します。
構文
record(recordname , {Field1,Field2 ..Fieldn})
パラメーター
- レコード名-これはレコードに付けられた名前です。
- Field1、Field2 ..Fieldn -これらは、レコードを構成するさまざまなフィールドのリストです。
戻り値
None
例えば
-module(helloworld).
-export([start/0]).
-record(person, {name = "", id}).
start() ->
P = #person{name="John",id = 1}.
上記の例は、2つのフィールドを持つレコードの定義を示しています。1つはIDで、もう1つは名前です。 また、レコードは次のように構築されます-
構文
#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 -これは、フィールドに割り当てる必要がある新しい値です。
戻り値
フィールドに割り当てられた新しい値を持つ新しいレコード。
例えば
-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