Curso AppleScript: Constructores, por Julifos

Los constructores son unos señores con casco que hacen edificios y cosas muy raras que casi no se utilizan en Applescript.

Se trata de utilizar una especie de “maqueta” para hacer algo nuevo y consistente con ella. Por ejemplo, el constructor puede ser un superhéroe, y lo que hacemos con él un Supermán y un Spiderman.

Típicamente, los constructores devuelven un “objeto” (un script object), que es lo “construído”.

constructores

Creo que después de los “prolegómenos”, es mejor que vayamos directos al ejemplo:

to crearPrototipo(nombre, edad, ojos)

  script prototipo

   property n : nombre

  property x : edad

  property y : ojos

  to presentarse()

   display dialog “Me llamo ” & n & “, tengo ” & x & ” años y dos ojos ” & y

  end presentarse

 end script

end crearPrototipo

set Laurita to crearPrototipo(“Laura”, 17, “marrones”)

set Bergancio to crearPrototipo(“Bergancio”, 42, “lila”)

tell Laurita to presentarse()

tell Bergancio to presentarse()

Con ayuda de nuestro constructor, hemos creado de la nada a dos personas llamadas “Laurita” y “Bergancio”, cada una con sus propias características. Ahora son dos objetos independientes, que han heredado tres propiedades (los parámetros que pasamos al constructor acerca de su nombre, edad y color de ojos) y un handler, que se puede utilizar en cualquier momento.

Como pueden ver ustedes, ha salido por ahí la palabreja “prototipo”, que se utiliza en otros lenguajes con un significado propio. En AppleScript no está documentada la existencia de prototipos, pero se pueden hacer unos sucedáneos, como los que han visto, personas humanas, en este ejemplo. Se podría llamar prototipo al script object que contiene el “constructor”.

Como ya hemos dicho, no se utilizan demasiado ni los constructores ni los prototipos, pero voy a mostrar aquí una situación en la cual se puede sacar provecho de su uso.

Pongamos por caso que vamos a tener un hijo. Necesitamos un nombre para él y hemos conseguido una lista bastante grande de nombres de varón. Somos del Barcelona CF y el traidor Ronaldo se ha cambiado al Real Madrid, así que deseamos eliminar de la lista cualquier nombre que empieze por “Ronald”, para que no nos recuerde la traición. Veamos la manera más rápida:

set nombresDeChico to {“Romario”, “Bebeto”, “Kareka”, “Ronaldo”, “Reiziger”, “Rivaldo”, “Ronaldinho”, “Juninho”, “Suker”, “Xavi”}

limpiarTraidores(nombresDeChico)

to limpiarTraidores(nombres)

script tipos

property sospechosos : nombres

property libresDeSospecha : {}

end script

repeat with i in tipos’s sospechosos

if i does not start with “Ronald” then set end of tipos’s libresDeSospecha to i’s contents

end repeat

return tipos’s libresDeSospecha

end limpiarTraidores

Voilá! Aquí está de vuelta la lista de nombres de no-traidores.

Y se preguntará usted, pedazo de humano, ¿para qué tanta complicación? Con un simple “repeat” habría bastado… Pues sí, pero resulta que si copiamos la lista de sospechosos en la propiedad de un script object, la iteración en el “loop” es muchísimo más rápida. Y el uso del constructor nos ayuda a hacerlo de manera automática. Según se recibe el parámetro en el handler, ya está copiada en el script object que hemos llamado “tipos”.

Si no se lo cree, puede vd. hacer todas las pruebas que quiera (pero con listas más largas, o repitiéndolo muchas veces, para que se note la diferencia).

En resumen, no es el prototipo en sí mismo el que nos ha dado la velocidad, pero sí nos ha ayudado a diseñar un handler la mar de eficiente.

Los restantes artículos sobe AppleScript se pueden encontrar en la categoría de Tutorial

0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x