[R] Mettre en paramètre d'une fonction, une fonction

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Nicolas
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 23 avr. 2008 13:31
Localisation : Aix en Provence
Status : Hors ligne

[R] Mettre en paramètre d'une fonction, une fonction

#1

Message par Nicolas »

Bonjour,
ma question risque d'en laisser perplexe plus d'un mais je me lance quand meme.
Est ce que dans autoit on peut mettre en paramètre d'une fonction une fonction ?
Par exemple j'ai 3 fonctions : FN1(), FN2(),FN3().
je veux créer une fonction FN4() qui va prendre en paramètre FN1() ou FN2() ou FN3().
Par exemple comme ça : FN4(FN1()). Est ce que c'est possible ?

Cela me permettrait de vraiment simplifier le code d'un de mes script qui hélas dépasse les 3000 lignes car je repete souvent la meme chose (étant débutant), d'ou la création de fonction.

Merci d'avance pour vos réponses.

Nicolas
Modifié en dernier par Nicolas le mer. 23 avr. 2008 15:04, modifié 1 fois.
Image
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] Mettre en paramètre d'une fonction, une fonction

#2

Message par tofu »

Bonjour,

A priori, je ne vois aucune contre-indication à la réalisation de ceci.

J'ai fais un petit exemple pour tester

Code : Tout sélectionner

affChaine(a(),b(),c())


Func affChaine($a,$b,$c)
    $chaine = $a & " " & $b & " " & $c
    ConsoleWrite("Le résultat est: " & $chaine & @CRLF)
EndFunc

Func a()
    return "Bonjour," 
EndFunc

Func b()
    return "comment"
EndFunc

Func c()
    return "ca va?"
EndFunc
Cela a l'air de fonctionner correctement, évidemment là c'est un cas très basique, je suppose que si tu as plus de 3000 lignes de code c'est que le système doit être plus complexe mais dans l'idée ça devrait fonctionner.

Cordialement,
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Nicolas
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 23 avr. 2008 13:31
Localisation : Aix en Provence
Status : Hors ligne

Re: [..] Mettre en paramètre d'une fonction, une fonction

#3

Message par Nicolas »

merci pour ta réponse mais dans ton exemple tu récupérère dans la fonction affchaine() le résultat des fonctions a(), b(), et c() en utilisant le return dans tes fonctions. Mais le pb c'est que mes fonctions ne sont pas la pour retourner un résultat mais pour traiter des chaines de caractères et renvoyer des résultats dans un fichier HTML. Il faut donc que je puisse les exécuter.

est ce que si je fais ça cela foncionne.

Code : Tout sélectionner

$Func=a()
affChaine($Func)

Func affChaine($a)
  $a ; pour lancer la fonction rentrée en paramètre
 EndFunc

Func a()
    msgbox(1,"","Bonjour") 
EndFunc

Func b()
    return "comment"
EndFunc

Func c()
    return "ca va?"
EndFunc
Image
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] Mettre en paramètre d'une fonction, une fonction

#4

Message par tofu »

J'ai repris ton exemple pour le travailler un peu et arriver à ce résultat:

Code : Tout sélectionner

Func a()
    msgbox(1,"","Bonjour")
EndFunc

$Func = "a()"
affChaine($Func)

Func affChaine($a)
  Execute($a) ; pour lancer la fonction rentrée en paramètre
 EndFunc
En fait, je passe le nom de la fonction en tant que chaine de caractère, et je la fais s'exécuter grâce à la fonction Execute().

J'espère que je n'ai pas fais de contre-sens à ce que tu demandes.

Cordialement,
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Nicolas
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 23 avr. 2008 13:31
Localisation : Aix en Provence
Status : Hors ligne

[R] Mettre en paramètre d'une fonction, une fonction

#5

Message par Nicolas »

Tu n'as pas fait de contre-sens du tout !!! merci beaucoup c'est exactement ce que je voulais faire mais je ne connaissais pas execute.

Merci

Nicolas
Image
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [R] Mettre en paramètre d'une fonction, une fonction

#6

Message par tolf »

La fonction Call est encore mieux que Execute car elle permet en plus de mettre des arguments dans la fonction appelée. Et donc pour reprendre l'exemple, ça donne :

Code : Tout sélectionner

$Func = "a"
Call($Func)

Func a()
    msgbox(1,"","Bonjour")
EndFunc

; inutile de passer par la fonction intermédiaire "affChaine"
;~ Func affChaine($a)
;~     Execute($a) ; pour lancer la fonction rentrée en paramètre
;~ EndFunc
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Répondre