Page 1 sur 1
[R] A quoi sert Call() ?
Posté : sam. 16 août 2014 21:36
par bilibili2011
Salut tout le monde,
quand on crée une fonction et qu'on l'appelle, quelle est la différence entre :
et
Merci.
Re: [..] A quoi sert Call() ?
Posté : sam. 16 août 2014 23:26
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é.
Re: [R] A quoi sert Call() ?
Posté : dim. 17 août 2014 15:11
par bilibili2011
Okay merci. Résolu
Re: [R] A quoi sert Call() ?
Posté : dim. 17 août 2014 20:22
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.
Re: [R] A quoi sert Call() ?
Posté : dim. 17 août 2014 21:28
par orax
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)
Re: [R] A quoi sert Call() ?
Posté : dim. 17 août 2014 22:05
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) 
Re: [R] A quoi sert Call() ?
Posté : dim. 17 août 2014 23:04
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 à :
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.
Re: [R] A quoi sert Call() ?
Posté : lun. 18 août 2014 00:17
par orax
jguinch a écrit :Si tu passes par là, corrige ton code :
Func Test3($sString,$nNumber, $aArray) 
Pourquoi ? Ça doit être correct puisque le code n'est pas de moi !

C'est d'après l'exemple de la doc :
http://www.autoitscript.com/autoit3/doc ... s/Call.htm
Re: [R] A quoi sert Call() ?
Posté : lun. 18 août 2014 01:56
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.
Re: [R] A quoi sert Call() ?
Posté : lun. 18 août 2014 07:54
par jguinch
Autant pour moi, j'ai lu trop vite, désolé Orax.
Je sors
