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.