[..] Variable globale dans une fonction

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mdanielm
Membre émérite
Membre émérite
Messages : 255
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

[..] Variable globale dans une fonction

#1

Message par mdanielm »

Bonjour,
Quel est l'intérêt d'une déclaration Global dans une fonction, comme ci dessous - peut-être pour en faire une UDF sans que $stop interfère avec l'appelant?
.---------------------
|Func main()
| Global $stop
| ........
|endfunc
|
|func search(...)
| Global $stop
| .....
|endfunc
|
|func Stop()
| Global $stop
| $stop = True
|endfunc
.-----------------------------------
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#2

Message par jchd »

Ca ne sert à rien, sauf à te compliquer la vie et risquer des bugs inutiles.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
mdanielm
Membre émérite
Membre émérite
Messages : 255
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#3

Message par mdanielm »

J'ai vu ça dans un post récent de

jbnh » Jeu 30 Juil 2015 13:42

et je pensais qu'il y avait encore une astuce que je ne comprenais pas.
Comme par exemple limiter la portée d'une variable globale au module.
Cordialement
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#4

Message par jchd »

Du tout. Il n'y a malheureusement pas de moyen pour faire ça, sauf à respecter une convention personnelle de type garde-fou mais qui n'empêche rien de façon stricte :

Code : Tout sélectionner

; MyUdf.au3

Local $_MyUDF_MyLocalVar
...
 
Pour moi, toute variable déclarée locale en tête d'un fichier inclus perso est considérée comme locale à ce fichier, même si sa portée effective est globale.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#5

Message par mikell »

jchd a écrit :Pour moi, toute variable déclarée locale en tête d'un fichier inclus perso est considérée comme locale à ce fichier, même si sa portée effective est globale.
Quel intérêt alors de déclarer cette variable en local si dans le script son statut est global ?
Dans le script de jbnh je ne vois pas l'intérêt de déclarer $stop en global dans chaque fonction plutôt qu'en global en tête de code
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#6

Message par jchd »

Quel intérêt alors de déclarer cette variable en local si dans le script son statut est global ?
Moralement, ça m'empêche d'y toucher et d'y avoir accès en dehors de ce que je considère sa portée.
Dans le script de jbnh je ne vois pas l'intérêt de déclarer $stop en global dans chaque fonction plutôt qu'en global en tête de code
Aucun, c'est seulement dangereux.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#7

Message par mikell »

jchd a écrit :Moralement, ça m'empêche d'y toucher et d'y avoir accès en dehors de ce que je considère sa portée.
Laquelle portée est globale... j'aime bien le "moralement" Image
Aucun, c'est seulement dangereux.
J'en étais sûr à 99% mais le fait que le fichier d'aide autorise explicitement une déclaration en global dans une fonction m'avait fichu le doute :mrgreen:
"Global can be used to assign to global variables inside a function, etc"
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
mdanielm
Membre émérite
Membre émérite
Messages : 255
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#8

Message par mdanielm »

Ce n'est pas parce que le langage le permet, qu'il faut s'autoriser à l'utiliser.
Ce n'est pas la solution la plus simple qui est la meilleure, c'est la plus claire, la plus lisible, la plus fiable, la plus robuste...
Cordialement, sans haine et sans violence
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Variable globale dans une fonction

#9

Message par mikell »

mdanielm a écrit :Ce n'est pas la solution la plus simple qui est la meilleure, c'est la plus claire, la plus lisible, la plus fiable, la plus robuste...
Ce qui très souvent revient au même, particulièrement dans le cas présent où la solution la plus simple mais aussi la plus fiable (... etc) est de déclarer la variable globale en tête de script et pas dans les fonctions
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre