Listas en AppleScript

En un artículo anterior ya vimos qué eran las variables en AppleScript y que, a semejanza de otros lenguajes de programación las había de varios tipos.

En este artículo nos centraremos en un tipo de variable que nos permite almacenar varios valores relacionados. Son las variables de tipo lista o conocidos en otros lenguajes de programación como array, vector o matriz de una dimensión.

Una lista es un conjunto de valores agrupados en un orden determinado. Este orden viene definido por el lugar que ocupa el elemento, llamado item, dentro de la lista.

Cada uno de los items de una lista puede ser de un tipo distinto. Esto significa que en una lista de 4 elementos el primero puede ser un texto, el segundo un número, el tercero otro texto y el cuarto el tipo que decidamos.

Para crear una lista se declara como una variable normal de AppleScript pero el conjunto de valores se agrupan entre llaves { (abre llave) y } (cierra llave) y separando los items con comas (,).

Veamos esto con un ejemplo. Vamos a almacenar en una variable todos los datos de contacto de una persona, para ello utilizamos una lista, y luego verbalizaremos toda la información del contacto. El código de nuestro script sería algo así:


on run
set contacto to {"Fulano", "de tal", 5.55123123E+8, "Calle falsa, 123, piso 4"}
say contacto as text
end run

La declaración de la lista es tan simple como la declaración de una variable en AppleScript.

En el ejemplo a la hora de verbalizar la información del contacto debemos convertir la variable de tipo lista a variable de tipo texto. Esto lo conseguimos con la sentencia as text. Si no lo hiciesemos así al intentar ejecutar el script optendríamos un error con un mensaje parecido a Error de script. No es posible convertir {«Fulano», «de tal», 5.55123123E+8, «Calle falsa, 123, piso 4»} en tipo text..

Accediendo a los items de una lista

Ya hemos indicado que los elementos de una lista se conocen como item y es así como nos vamos a referir en nuestro código para interactuar de forma individual con un elemento de una lista.

En AppleScript para acceder al valor de una propiedad de un objeto o a los items de una lista utilizamos el comando get indicando qué queremos obtener y de donde. El valor devuelto por get debe ser almacenado en una variable.

Veamos un ejemplo en el que en una lista de 5 números queremos obtener el que está en la cuarta posición de la lista. El código sería el siguiente:


on run
-- Declaramos una lista de 5 nmeros
set lista to {9, 2, 33, 1, 100}
-- Verbalizamos la lista
say lista as text
set valor to get item 4 of lista
say valor
end run

En una lista cuyos items sean de distinto tipo podemos usar el comando get para referenciar el item por su tipo y posición. Veamos esto mejor con un ejemplo: en una lista donde almacenamos el nombre y la edad de 3 personas queremos obtener el nombre de la tercera persona. Bien podríamos preguntar por el quinto elemento de la lista o por el tercer texto almacenado en la lista. El código sería el siguiente para este segundo caso:


on run
-- Declaramos una lista de 3 personas con su nombre y edad
set lista to {"Juan", 23, "Antonio", 38, "Manuel", 18}
-- Verbalizamos la lista
say lista as text
-- Obtenemos el tercer nombre de la lista
set valor to get text 3 of lista
say valor
-- Obtenemos la tercera edad de la lista
set valor to get integer 3 of lista
say valor
end run

Propiedades de las listas

Las listas al tratarse de un tipo especial de variable tiene una serie de propiedades y elementos para poder utilizarlas con comodidad. Estas propiedades nos permiten conocer, por ejemplo, el número de elementos que hay en la lista. En un artículo posterior hablaremos en más detalle sobre las propiedades en AppleScript

En el siguiente ejemplo veremos las propiedades length, rest, reverse y class.


on run
-- Declaramos una lista de 5 elementos
set lista to {1, 2, 3, 4, 5}
-- Verbalizamos la lista
say lista as text
-- Obtenemos la clase o tipo de variable que es lista
set tipo to get class of lista
say tipo
-- obtenemos cuantos elementos hay en la lista
set numElementos to get length of lista
say "La lista tiene"
say numElementos
say "elementos"
-- Damos la vuelta a la lista y la almacenamos en otra variable
set listaInversa to get reverse of lista
say listaInversa as text
-- Creamos una nueva lista pero sin el primer elemento de la lista inicial
set miniLista to get rest of lista
say miniLista as text
end run

En próximos artículos veremos más cosas sobre las listas en AppleScript.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.