{"id":477,"date":"2017-11-27T08:00:34","date_gmt":"2017-11-27T07:00:34","guid":{"rendered":"http:\/\/www.programaraciegas.net\/?p=477"},"modified":"2017-11-19T10:47:56","modified_gmt":"2017-11-19T09:47:56","slug":"listas-en-applescript","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=477","title":{"rendered":"Listas en AppleScript"},"content":{"rendered":"<p>En un art&iacute;culo anterior ya vimos qu&eacute; eran las <a href=\"http:\/\/www.programaraciegas.net\/?p=216\">variables en AppleScript<\/a> y que, a semejanza de otros lenguajes de programaci&oacute;n las hab&iacute;a de varios tipos.<\/p>\n<p>En este art&iacute;culo nos centraremos en un tipo de variable que nos permite almacenar varios valores relacionados. Son las variables de tipo <strong>lista<\/strong> o conocidos en otros lenguajes de programaci&oacute;n como <em>array<\/em>, <em>vector<\/em> o matriz de una dimensi&oacute;n.<\/p>\n<p>Una lista es un conjunto de valores agrupados en un orden determinado. Este orden viene definido por el lugar que ocupa el elemento, llamado <strong>item<\/strong>,  dentro de la lista.<\/p>\n<p>Cada uno de los <strong>items<\/strong> 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&uacute;mero, el tercero otro texto y el cuarto el tipo que decidamos.<\/p>\n<p>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 (,).<\/p>\n<p>Veamos esto con un ejemplo. Vamos a almacenar en una variable todos los datos de contacto de una persona, para ello utilizamos una <strong>lista<\/strong>, y luego verbalizaremos toda la informaci&oacute;n del contacto. El c&oacute;digo de nuestro script ser&iacute;a algo as&iacute;:<\/p>\n<p><code><br \/>\non run<br \/>\n\tset contacto to {\"Fulano\", \"de tal\", 5.55123123E+8, \"Calle falsa, 123, piso 4\"}<br \/>\n\tsay contacto as text<br \/>\nend run<br \/>\n<\/code><\/p>\n<p>La declaraci&oacute;n de la lista es tan simple como la declaraci&oacute;n de una variable en AppleScript.<\/p>\n<p>En el ejemplo a la hora de verbalizar la informaci&oacute;n del contacto debemos convertir la variable de tipo lista a variable de tipo texto. Esto lo conseguimos con la sentencia <em>as text<\/em>. Si no lo hiciesemos as&iacute; al intentar ejecutar el script optendr&iacute;amos un error con un mensaje parecido a <em>Error de script. No es posible convertir {\u00abFulano\u00bb, \u00abde tal\u00bb, 5.55123123E+8, \u00abCalle falsa, 123, piso 4\u00bb} en tipo text.<\/em>.<\/p>\n<h2>Accediendo a los items de una lista<\/h2>\n<p>Ya hemos indicado que los elementos de una lista se conocen como <strong>item<\/strong> y es as&iacute; como nos vamos a referir en nuestro c&oacute;digo para interactuar de forma individual con un elemento de una lista.<\/p>\n<p>En AppleScript para acceder al valor de una propiedad de un objeto o a los items de una lista utilizamos el comando <strong>get<\/strong> indicando qu&eacute; queremos obtener y de donde. El valor devuelto por <strong>get<\/strong> debe ser almacenado en una variable.<\/p>\n<p>Veamos un ejemplo en el que en una lista de 5 n&uacute;meros queremos obtener el que est&aacute; en la cuarta posici&oacute;n de la lista. El c&oacute;digo ser&iacute;a el siguiente:<\/p>\n<p><code><br \/>\non run<br \/>\n\t-- Declaramos una lista de 5 nmeros<br \/>\n\tset lista to {9, 2, 33, 1, 100}<br \/>\n\t-- Verbalizamos la lista<br \/>\n\tsay lista as text<br \/>\n\tset valor to get item 4 of lista<br \/>\n\tsay valor<br \/>\nend run<br \/>\n<\/code><\/p>\n<p>En una lista cuyos items sean de distinto tipo podemos usar el comando <strong>get<\/strong> para referenciar el item por su tipo y posici&oacute;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&iacute;amos preguntar por el quinto elemento de la lista o por el tercer texto almacenado en la lista. El c&oacute;digo ser&iacute;a el siguiente para este segundo caso:<\/p>\n<p><code><br \/>\non run<br \/>\n\t-- Declaramos una lista de 3 personas con su nombre y edad<br \/>\n\tset lista to {\"Juan\", 23, \"Antonio\", 38, \"Manuel\", 18}<br \/>\n\t-- Verbalizamos la lista<br \/>\n\tsay lista as text<br \/>\n\t-- Obtenemos el tercer nombre de la lista<br \/>\n\tset valor to get text 3 of lista<br \/>\n\tsay valor<br \/>\n\t\t-- Obtenemos la tercera edad de la lista<br \/>\n\tset valor to get integer 3 of lista<br \/>\n\tsay valor<br \/>\nend run<br \/>\n<\/code><\/p>\n<h2>Propiedades de las listas<\/h2>\n<p>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&uacute;mero de elementos que hay en la lista. En un art&iacute;culo posterior hablaremos en m&aacute;s detalle sobre las <strong>propiedades<\/strong> en AppleScript<\/p>\n<p>En el siguiente ejemplo veremos las propiedades <strong>length<\/strong>, <strong>rest<\/strong>, <strong>reverse<\/strong> y <strong>class<\/strong>.<\/p>\n<p><code><br \/>\non run<br \/>\n\t-- Declaramos una lista de 5 elementos<br \/>\n\tset lista to {1, 2, 3, 4, 5}<br \/>\n\t-- Verbalizamos la lista<br \/>\n\tsay lista as text<br \/>\n\t-- Obtenemos la clase o tipo de variable que es lista<br \/>\n\tset tipo to get class of lista<br \/>\n\tsay tipo<br \/>\n\t-- obtenemos cuantos elementos hay en la lista<br \/>\n\tset numElementos to get length of lista<br \/>\n\tsay \"La lista tiene\"<br \/>\n\tsay numElementos<br \/>\n\tsay \"elementos\"<br \/>\n\t-- Damos la vuelta a la lista y la almacenamos en otra variable<br \/>\n\tset listaInversa to get reverse of lista<br \/>\n\tsay listaInversa as text<br \/>\n\t-- Creamos una nueva lista pero sin el primer elemento de la lista inicial<br \/>\n\tset miniLista to get rest of lista<br \/>\n\tsay miniLista as text<br \/>\nend run<br \/>\n<\/code><\/p>\n<p>En pr&oacute;ximos art&iacute;culos veremos m&aacute;s cosas sobre las listas en AppleScript.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En un art&iacute;culo anterior ya vimos qu&eacute; eran las variables en AppleScript y que, a semejanza de otros lenguajes de programaci&oacute;n las hab&iacute;a de varios tipos. En este art&iacute;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 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=477\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abListas en AppleScript\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,6],"tags":[],"class_list":["post-477","post","type-post","status-publish","format-standard","hentry","category-applescript","category-programacion"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/477","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=477"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/477\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=477"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=477"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=477"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}