Erlang - Records

Erlang a la possibilité supplémentaire de créer des enregistrements. Ces enregistrements se composent de champs. Par exemple, vous pouvez définir un enregistrement personnel qui a 2 champs, l'un est l'id et l'autre est le champ de nom. Dans Erlang, vous pouvez ensuite créer diverses instances de cet enregistrement pour définir plusieurs personnes avec différents noms et identifiants.

Explorons comment nous pouvons travailler avec les enregistrements.

Créer un enregistrement

Un enregistrement est créé à l'aide de l'identificateur d'enregistrement. Dans cet identifiant d'enregistrement, vous spécifiez les différents champs qui constituent l'enregistrement. La syntaxe générale et l'exemple sont donnés ci-dessous.

Syntaxe

record(recordname , {Field1,Field2 ..Fieldn})

Paramètres

  • recordname - C'est le nom donné au disque.

  • Field1,Field2 ..Fieldn - Ce sont la liste des différents champs qui constituent l'enregistrement.

Valeur de retour

Aucun

Par exemple

-module(helloworld). 
-export([start/0]). 
-record(person, {name = "", id}). 

start() -> 
   P = #person{name="John",id = 1}.

L'exemple ci-dessus montre la définition d'un enregistrement avec 2 champs, l'un est l'identifiant et l'autre le nom. En outre, un enregistrement est construit de la manière suivante -

Syntaxe

#recordname {fieldName1 = value1, fieldName2 = value2 .. fieldNameN = valueN}

Où vous affectez des valeurs aux champs respectifs lorsqu'une instance de l'enregistrement est définie.

Accéder à une valeur de l'enregistrement

Pour accéder aux champs et aux valeurs d'un enregistrement particulier, la syntaxe suivante doit être utilisée.

Syntaxe

#recordname.Fieldname

Paramètres

  • recordname - C'est le nom donné au disque.

  • Fieldname - C'est le nom du champ auquel il faut accéder.

Valeur de retour

La valeur attribuée au champ.

Par exemple

-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]).

Production

La sortie du programme ci-dessus est la suivante.

1
“John”

Mise à jour d'une valeur de l'enregistrement

La mise à jour d'une valeur d'enregistrement se fait en modifiant la valeur dans un champ particulier, puis en affectant l'enregistrement à un nouveau nom de variable. La syntaxe générale et l'exemple sont donnés ci-dessous.

Syntaxe

#recordname.Fieldname = newvalue

Paramètres

  • recordname - C'est le nom donné au disque.

  • Fieldname - C'est le nom du champ auquel il faut accéder.

  • newvalue - C'est la nouvelle valeur qui doit être affectée au champ.

Valeur de retour

Le nouvel enregistrement avec les nouvelles valeurs affectées aux champs.

Par exemple

-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]).

Production

La sortie du programme ci-dessus est la suivante -

1
“Dan”

Enregistrements imbriqués

Erlang a également la possibilité d'avoir des enregistrements imbriqués. L'exemple suivant montre comment ces enregistrements imbriqués peuvent être créés.

Par exemple

-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]).

Dans l'exemple ci-dessus, les choses suivantes doivent être notées -

  • Nous créons d'abord l'enregistrement d'une personne qui a les valeurs de champ de nom et d'adresse.

  • Nous définissons ensuite un enregistrement d'employé qui a la personne comme champ et un champ supplémentaire appelé id.

Production

La sortie du programme ci-dessus est la suivante.

1