Hoy aprenderemos tres tipos de colecciones respaldadas por AL.
Las colecciones representan grupos de objetos, denominados elementos. Podemos encontrar diversos tipos de colecciones, según si sus elementos están ordenados, o si permitimos repetición de elementos o no.
En una colección no podremos tener valores de diferente tipo. Por ejemplo, no podremos añadir valores de fecha a una colección que solo permite valores de texto.
Los tres tipos de colecciones son:
- Arrays
- Listas
- Diccionarios
En esta publicación hablaremos sobre cada tipo de colección y veremos ejemplos.
Empezaremos con la colección que hemos usado con versiones antiguas de Navision y nos resulta más familiar.
Arrays
Los arrays son variables complejas que contienen un grupo de valores con el mismo tipo de datos.
Un array contiene varios valores y estos valores se almacenan de forma contigua en los elementos del array. Se puede acceder a estos valores mediante el índice, que también puede ser un valor almacenado en otra variable. Con este diseño, podríamos crear un bucle en el que se incremente una determinada variable para recorrer cada elemento de un array.
Mediante el uso de la propiedad Dimension, podemos definir cuantas dimensiones contendrá el array.
Podemos declarar arrays unidimensionales o multidimensionales.
Ejemplo de un array unidimensional:
SalesAmount: array[10] of Integer;
Para acceder a un elemento del array lo haremos mediante el índice:
SalesAmount[5] := 0;
A diferencia de otros lenguajes de programación, el índice del array comienza en 1 y no en 0. En el ejemplo anterior el primer elemento será el 1 y el ultimo el 10.
Tener un solo elemento entre corchetes indica que el array es unidimensional. Si deseamos uno multidimensional utilizaremos la siguiente expresión:
SalesAmount: array[6,9] of integer;
Listas
Las variables tipo lista se pueden comparar con un array. Solo se pueden usar con tipos de variables fundamentales y representan una lista de valores fuertemente tipada a la que se puede acceder por índice.
Podemos tener una lista de enteros (list of [integer]), pero no podemos tener una lista de blob.
A diferencia del array, las listas no requieren que definamos cuantos elementos deseamos almacenar.
Además, las listas tienen algunos métodos que se utilizan con frecuencia.
Para crear una lista utilizaremos el siguiente código:
CustomerNames: List of [text];
Añadiremos un elemento a la lista con el siguiente método:
CustomerNames.Add(‘Erik Soler’);
Y para recuperar un valor:
CustomerNames.get(1);
Además de estos 3 métodos, también disponemos de algunos muy utilizados como:
- Contains: Determina si un elemento está en la lista.
- Count: Nos devuelve el numero de elementos de la lista.
- Remove: Te permite eliminar un elemento de la lista.
Diccionarios
Los diccionarios representan una colección de claves y valores.
Cada clave que creemos en este diccionario debe ser única. La principal ventaja es que podemos obtener inmediatamente el valor de una clave especifica.
El valor de un diccionario puede ser una variable, pero también puede ser una lista u otro tipo de diccionario.
Veamos el siguiente ejemplo.
Definimos las listas:
NombresClientesUS: List of [Text];
NombresClientesES: List of [Text];
Declaramos el diccionario:
ClientesPorPais: Dictionary of [Code[20], List of [Text]];
Asignamos valores a las listas:
NombresClientesUS.Add(‘Paul’);
NombresClientesUS.Add(‘Linda’);
NombresClientesES.Add(‘Erik’);
NombresClientesES.Add(‘Jose’);
Asignamos los valores al diccionario:
ClientesPorPais.Add(‘US’, NombresClientesUS);
ClientesPorPais.Add(‘ES’, NombresClientesES);
Para obtener valores del diccionario utilizamos la siguiente expresión:
ClientesPorPais.Get(‘ES’).Get(1);
Aquí tenemos un ejemplo del código completo:
Como podéis observar con AL, disponemos de nuevos elementos con los que poder programar de una manera más sencilla.