Erlang - Records
Erlang ha la possibilità in più per creare record. Questi record sono costituiti da campi. Ad esempio, puoi definire un record personale che ha 2 campi, uno è l'id e l'altro è il campo del nome. In Erlang, puoi quindi creare varie istanze di questo record per definire più persone con vari nomi e ID.
Esploriamo come possiamo lavorare con i record.
Creazione di un record
Viene creato un record utilizzando l'identificatore del record. In questo identificatore di record, specifichi i vari campi che costituiscono il record. La sintassi generale e l'esempio sono forniti di seguito.
Sintassi
record(recordname , {Field1,Field2 ..Fieldn})
Parametri
recordname - Questo è il nome dato al record.
Field1,Field2 ..Fieldn - Questi sono l'elenco dei vari campi che costituiscono il record.
Valore di ritorno
Nessuna
Per esempio
-module(helloworld).
-export([start/0]).
-record(person, {name = "", id}).
start() ->
P = #person{name="John",id = 1}.
L'esempio sopra mostra la definizione di un record con 2 campi, uno è l'id e l'altro è il nome. Inoltre, un record viene costruito nel modo seguente:
Sintassi
#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}
Dove si assegnano i valori ai rispettivi campi quando viene definita un'istanza del record.
Accesso a un valore del record
Per accedere ai campi e ai valori di un particolare record, è necessario utilizzare la seguente sintassi.
Sintassi
#recordname.Fieldname
Parametri
recordname - Questo è il nome dato al record.
Fieldname - Questo è il nome del campo a cui accedere.
Valore di ritorno
Il valore assegnato al campo.
Per esempio
-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]).
Produzione
L'output del programma di cui sopra è il seguente.
1
“John”
Aggiornamento di un valore del record
L'aggiornamento di un valore di record viene eseguito modificando il valore in un campo particolare e quindi assegnando il record a un nuovo nome di variabile. Di seguito vengono forniti la sintassi generale e l'esempio.
Sintassi
#recordname.Fieldname = newvalue
Parametri
recordname - Questo è il nome dato al record.
Fieldname - Questo è il nome del campo a cui accedere.
newvalue - Questo è il nuovo valore che deve essere assegnato al campo.
Valore di ritorno
Il nuovo record con i nuovi valori assegnati ai campi.
Per esempio
-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]).
Produzione
L'output del programma di cui sopra è il seguente:
1
“Dan”
Record annidati
Erlang ha anche la possibilità di avere record annidati. L'esempio seguente mostra come creare questi record nidificati.
Per esempio
-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]).
Nell'esempio sopra è necessario notare le seguenti cose:
Per prima cosa creiamo il record di una persona che ha i valori di campo nome e indirizzo.
Definiamo quindi un record del dipendente che ha la persona come campo e un campo aggiuntivo chiamato id.
Produzione
L'output del programma di cui sopra è il seguente.
1