Erlang - Records

Erlang tiene la facilidad adicional para crear registros. Estos registros constan de campos. Por ejemplo, puede definir un registro personal que tiene 2 campos, uno es el id y el otro es el campo de nombre. En Erlang, puede crear varias instancias de este registro para definir varias personas con varios nombres e identificaciones.

Exploremos cómo podemos trabajar con registros.

Crear un registro

Se crea un registro utilizando el Identificador de registro. En este identificador de registro, especifica los diversos campos que constituyen el registro. La sintaxis general y el ejemplo se dan a continuación.

Sintaxis

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

Parámetros

  • recordname - Este es el nombre que se le da al registro.

  • Field1,Field2 ..Fieldn - Éstos son la lista de varios campos que constituyen el registro.

Valor devuelto

Ninguna

Por ejemplo

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

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

El ejemplo anterior muestra la definición de un registro con 2 campos, uno es el id y el otro es el nombre. Además, un registro se construye de la siguiente manera:

Sintaxis

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

Donde asigna valores a los campos respectivos cuando se define una instancia del registro.

Accediendo a un valor del registro

Para acceder a los campos y valores de un registro en particular, se debe utilizar la siguiente sintaxis.

Sintaxis

#recordname.Fieldname

Parámetros

  • recordname - Este es el nombre que se le da al registro.

  • Fieldname - Este es el nombre del campo al que se debe acceder.

Valor devuelto

El valor asignado al campo.

Por ejemplo

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

Salida

El resultado del programa anterior es el siguiente.

1
“John”

Actualización de un valor del registro

La actualización de un valor de registro se realiza cambiando el valor a un campo en particular y luego asignando el registro a un nuevo nombre de variable. La sintaxis general y el ejemplo se dan a continuación.

Sintaxis

#recordname.Fieldname = newvalue

Parámetros

  • recordname - Este es el nombre que se le da al registro.

  • Fieldname - Este es el nombre del campo al que se debe acceder.

  • newvalue - Este es el nuevo valor que debe asignarse al campo.

Valor devuelto

El nuevo registro con los nuevos valores asignados a los campos.

Por ejemplo

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

Salida

El resultado del programa anterior es el siguiente:

1
“Dan”

Registros anidados

Erlang también tiene la posibilidad de tener registros anidados. El siguiente ejemplo muestra cómo se pueden crear estos registros anidados.

Por ejemplo

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

En el ejemplo anterior se deben tener en cuenta las siguientes cosas:

  • Primero estamos creando el registro de una persona que tiene los valores de campo de nombre y dirección.

  • Luego definimos un registro de empleado que tiene a la persona como campo y un campo adicional llamado id.

Salida

El resultado del programa anterior es el siguiente.

1