I. Les bases sur les fonctions et les paramètres.
Une fonction est un bout de code que l'on va appeler dans un autre.
Par exemple, la fonction native d'Autoit (à savoir, une fonction qui existe directement dans l'interpréteur Autoit) la fonction ConsoleWrite(). Cette fonction permet d’écrire du texte dans la console.
Pour savoir ce que l'on veut écrire, ConsoleWrite() utilise un paramètre. Il s'agit d'une variable que l'on
passe a la fonction par cette syntaxe :
Noter qu'on peut également passer une expression littéral :
Une fonction renvoi une variable. Par exemple :
Par définition, une fonction est appelée, avec ou sans paramètres, et renvoi une valeur, sans agir sur le reste de l'application. Tant que l'on exploite pas le retour de la fonction, celle ci est sans impacte pour le reste du code. Il existe toute foi des fonctions qui agissent sans que le retour n'ai besoin d’être utilisé. On parle alors de
procédures. ConsoleWrite() en est une, comme beaucoup d'autre fonctions en Autoit.
Nous allons maintenant nous pencher sur une fonction définie par nos soin. Pour cela, nous allons prendre un exemple simple de fonction que l'on va faire évoluer durant ce tuto : la fonction bonjour()
Pour notre exemple, nous travaillerons sur un code capable d'écrire dans la console "Bonjour mon_pseudo". Il s'agit donc d'une procédure, vous l'aurez comprit.
La syntaxe pour définir nous même une fonction est la suivante :
Le Return est facultatif. Mais dans le cadre d'une procédure, il est de bonne pratique de retourner une information sur la bonne réussite ou non de la fonction. En Autoit, on possède aussi pour les erreurs la macro @error.
Voici un premier jet pour notre fonction bonjour()
Cette fonction écrira "Bonjour Iste" dans la console à son appel.
Voici le code de test que l'on utilisera tout le long de ce tuto en enrichissant la fonction bonjour()
Code : Tout sélectionner
bonjour()
Func bonjour()
ConsoleWrite("Bonjour Iste")
EndFunc
Exécutez le, vous verrez bien écrit "Bonjour Iste" entre le blabla habituel d'autoit dans la console
Maintenant, comme c'est pas bien pratique de devoir modifier la fonction à chaque changement de pseudo, nous allons passer en paramètre le nom à afficher.
Code : Tout sélectionner
Func bonjour($pseudo)
ConsoleWrite("Bonjour " & $pseudo)
EndFunc
Le " & $pseudo" c'est de la concaténation de chaine. Je vous laisse aller vous renseigner dessus si besoin car ce n'est pas le sujet ici.
Un paramètre est donc la valeur d'une variable qui est passée a la fonction dans une autre pour qu'elle puisse travailler avec. On peut avoir plusieurs paramètres. Les paramètres on pour scope (portée) la fonction (voir un tuto sur les scope si besoin).
Maintenant que notre fonction prend maintenant une variable en paramètres, nous pouvons l'appeler grâce à ce code
La valeur de "Roger" sera copiée dans $pseudo.
Poussons un peu plus loin cette histoire de paramètre. Nous pouvons déjà le rendre optionnel en lui donnant une valeur par défaut avec cette syntaxe :
La fonction peut maintenant être appelée avec ou sans paramètre :
Les paramètres optionnels doivent être les derniers !
Si vous voulez savoir dans votre fonction si l'utilisateur à envoyé "anonyme" ou rien, vous pouvez utiliser le mot clef Default en valeur par défaut. Exemple :
Code : Tout sélectionner
Func bonjour($param = Default)
If $param = Default Then
$pseudo = "anonyme"
Else
$pseudo = $param
EndIf
ConsoleWrite("Bonjour " & $pseudo)
If $param = Default Then MsgBox(0, '', "Ce n'est pas bien de ne pas donner son nom !")
EndFunc
En testant If $param = Default, on peut savoir si l'utilisateur a ou non envoyé le paramètre.
Nous pouvons aussi mettre le paramètres en Const comme toutes variables :
Je vous le recommande fortement. Cela permet de ne jamais perdre la valeur passée en paramètre durant la fonction. Si vous avez besoin de la modifier, faites le dans une nouvelle variable. Ne cherchez pas à avoir un code "léger" à tout prix.
Enfin, nous pouvons aussi marquer le paramètre ByRef
Un paramètre ByRef ne copiera pas le code, mais la référence de la variable. Ainsi, un paramètre ByRef si il est modifié dans la fonction modifiera la valeur de la variable passée en paramètre. Cela peut être utilisé, entre autre, pour éviter la duplication de variables lourdes comme des gros tableaux.
Un paramètre ByRef doit obligatoirement être une variable. Vous ne pouvez donc pas passer de valeurs littérales ou encore les rendre optionnels.
Voici pour les bases sur les fonctions et leur paramètres.
Je saute volontairement de nombreux aspects liés aux fonctions comme le retour ou les udf pour nous concentrer sur l'essentiel.