Débuter en AppleScript
La programmation AppleScript en exemples.

kiwi
Les variables locales et globales.
Dans cet article, nous aborderons le concept de variables locales et de variables globales. Le but n'étant pas de préconiser l'une ou l'autre mais de présenter les comportements des unes et des autres dans les programmes. La première chose à avoir en tête à propos des variables, locales ou gloabales est qu'elles sont ré-initialisées à chaque lancement du programme. Les globales ou locales ne signifie pas persistantes.


Exemple 1 : Récupérez l'AppleScript ici.

Le Script :

on fonction_1()
set
parametre_1 to 10
end
fonction_1

set
parametre_1 to 1
fonction_1()
display dialog "parametre 1 = " & parametre_1



Explications :
On affecte une valeur de 1 à la variable "parametre_1" puis on appelle "fonction_1" qui est sensé affecter à "parametre_1" la valeur 10. Pourtant en fin de programme, on a toujours "parametre_1" égal 1. Pourquoi ?
Tout simplement parce que la variable "
parametre_1" de programme principal n'est pas la [même] variable "parametre_1" que celle de la fonction "fonction_1". La variable "parametre_1" de la fonction est une variable locale de la fonction. Il s'avère qu'elle porte le même nom.


Astuce :
La fonction "fonction_1" n'agit pas sur la variable "parametre_1". Si on désire forcer la fonction à agir, il suffit de changer le programme principal comme suit :

set parametre_1 to 1
set
parametre_1 to fonction_1()
display dialog "parametre 1 = " & parametre_1

Dans ce cas, "
parametre_1" devient égal à 10. Mais gardons à l'esprit que la variable "parametre_1" de la fonction reste toujours locale. Vous pouvez en avoir la preuve en changeant son nom comme suit :

on fonction_1()
set
parametre_1XXX to 10
end
fonction_1

le résultat reste identique.



Les variables : comment créer une variable globale.
Maintenant qu'on sait ce qu'est une variable locale et une variable globle, il faut savoir comment les définir.

Exemple 2 : Récupérez l'AppleScript ici.

Le Script :

global parametre_2

on
fonction_2()
set
parametre_2 to 10
end
fonction_2

set
parametre_2 to 1
fonction_2()
display dialog "parametre 2 = " & parametre_2


Explications :
Cette fois le programme renvoie un résultat égal à 10. Ce qui prouve que la fonction a agit de manière globale. Toute la différence réside dans la déclaration en début de programme. Le terme "global" va indique toutes les occurences de "parametre_2" vont être traitées de la même manière sauf indication contraire.


Astuce :
Si on a plusieurs variables globales à déclarer, il suffit de les écrire bout à bout séparées par des virgules comme suit :

global parametre_2, parametre_3, parametre_4



Les variables : comment créer une variable locale.
Maintenant qu'on sait comment faire en sorte qu'une variable soit globale, on va s'intéresser à faire en sorte qu'elle soit locale. Dans l'explication précédent, on peut lire "sauf indication contraire". C'est justement l'indication contraire qui nous inéressera ici.

Exemple 3 : Récupérez l'AppleScript ici.

Le Script :

global parametre_3

on
fonction_3(parametre_3)
set
parametre_3 to 10
end
fonction_3

set
parametre_3 to 1
fonction_3(parametre_3)
display dialog "parametre 3 = " & parametre_3



Explications :
On précise dans la déclaration de "fonction_3" qu'elle accepterait un paramètre et que ce paramètre serait "parametre_3". Ainsi on indique que "parametre_3" au sein de "fonction_3" est une variable locale.



Les variables : comment créer une variable utilisant un nom réservé.
Ce dernier point à propos des variables est plus du domaine de l'astuce. Il est possible qu'on veuille utiliser un nom de variable qui s'avère être un mot réservé par le dictionnaire d'une application.

Exemple 4 : Récupérez l'AppleScript ici.

Le Script :

set |repeat| to 1

display dialog "|repeat| = " & |repeat|


Explications :
On utilise une variable qui s'appelle "repeat". Ce nom est aussi celui d'une instruction d'AppleScript. Pour pouvoir s'en servir quand même, il faudra l'écrire entre deux barres verticale (le symbole de la valeur absolue en mathématique) qu'on obtient sur un clavier français en tapant alt+shift+L.