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