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