[R] A quoi sert Call() ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
bilibili2011
Niveau 1
Niveau 1
Messages : 4
Enregistré le : sam. 16 août 2014 21:12
Status : Hors ligne

[R] A quoi sert Call() ?

#1

Message par bilibili2011 »

Salut tout le monde,
quand on crée une fonction et qu'on l'appelle, quelle est la différence entre :

Code : Tout sélectionner

mafonction()
et

Code : Tout sélectionner

Call("mafonction")
:?:

Merci.
Modifié en dernier par bilibili2011 le dim. 17 août 2014 15:12, modifié 1 fois.
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: [..] A quoi sert Call() ?

#2

Message par jchd »

Aucune. Maintenant que les fonctions sont des types à part entière (enfin en première approximation), Call n'a plus vraiment de raison d'être utilisé.

Code : Tout sélectionner

Local $f = MsgBox
$f(0, "", "Coucou !")
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
bilibili2011
Niveau 1
Niveau 1
Messages : 4
Enregistré le : sam. 16 août 2014 21:12
Status : Hors ligne

Re: [R] A quoi sert Call() ?

#3

Message par bilibili2011 »

Okay merci. Résolu
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] A quoi sert Call() ?

#4

Message par TommyDDR »

Chose que vous ne pouvez faire qu'avec un call : appeler une fonction avec une chaine contenant le nom de celle-ci

Code : Tout sélectionner

Local $func = InputBox("", "Ecrire ""test""")
Call($func)

Func test()
    MsgBox(0, "", "ok")
EndFunc
en faisant $test() vous aurez une erreur car $test est de type string et non une fonction.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] A quoi sert Call() ?

#5

Message par orax »

Code : Tout sélectionner

Execute($func & '()')
:P

Il y a aussi le fait de pouvoir passer tous les paramètres arguments par l'intermédiaire d'un seul de type array.

Code : Tout sélectionner

Call("Test3", $aArgs)
Func Test3($sString, $nNumber, $aArray)
Modifié en dernier par orax le lun. 18 août 2014 00:20, modifié 1 fois.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] A quoi sert Call() ?

#6

Message par jguinch »

Bonne remarque Orax. Je n'y avais jamais prêté attention, ça peut être utile.
Si tu passes par là, corrige ton code : Func Test3($sString,$nNumber, $aArray) :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
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: [R] A quoi sert Call() ?

#7

Message par jchd »

appeler une fonction avec une chaine contenant le nom de celle-ci
Certes, mais c'est d'une fragilité digne de Fortran77 et d'un intérêt moins qu'anecdotique. En pratique une construction récente sera mille fois plus robuste.
Execute($func & '()')
Même combat : ça ne rime plus à rien par rapport à :

Code : Tout sélectionner

$f = _Ma Fonction
...
$f("Coucou, c'est moi.")
Concernant le passage d'un tableau d'arguments (avec ["CallArgArray", $arg1, $arg2, ...]) ça a pu servir mais ce n'est pas du tout une fonctionalité majeure. Autant passer un tableau direct en ByRef, éventuellement vide.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] A quoi sert Call() ?

#8

Message par orax »

jguinch a écrit :Si tu passes par là, corrige ton code : Func Test3($sString,$nNumber, $aArray) :wink:
Pourquoi ? Ça doit être correct puisque le code n'est pas de moi ! :mrgreen: C'est d'après l'exemple de la doc : http://www.autoitscript.com/autoit3/doc ... s/Call.htm
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
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: [R] A quoi sert Call() ?

#9

Message par jchd »

jguinch,

La doc est correcte et l'exemple aussi.
Le tableau des arguments est "mis à plat" au niveau de la fonction appelée. Le premier argument est bien la chaîne, le second un entier et le troisième un tableau.

C'est la chaîne magique "CallArgArray" en tête de tableau qui provoque ce déploiement des arguments.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] A quoi sert Call() ?

#10

Message par jguinch »

Autant pour moi, j'ai lu trop vite, désolé Orax.
Je sors :arrow:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre