|
||||||||||||
Une fonction est un moyen de réutiliser une partie
de code et d'étendre le langage. En passant des paramètres à une fonction, on peut adapter le processus à différents cas. C'est la mission du programmeur de décider comment diviser un traitement en fonctions. Le langage Scriptol dispose d'une quantité de fonctions intégrées, et il utilise directement les fonctions de la librairie du langage cible, soit Php, ou C++. Dans ce chapitre nous verrons comment définir de nouvelles fonctions. Définir une fonction Une fonction commence avec une interface qui définit comment elle doit être appelée, suivi par un bloc d'instructions, et terminé par le mot-clé "return" (retour). type [type]* nom ( argument [, argument]* ) [:] ... instructions ... return [type [, type]*] Ce qui signifie ceci: - un ou plusieurs types de retour, - suivi du nom de la fonction, - puis entre parenthèses, un ou plusieurs arguments. - dans le corps de la fonction, des instructions, - le mot clé return suivi du même nombre d'arguments défini plus haut. Le symbole : est optionnel après les arguments, c'est un séparateur que l'on l'utilise que s'il y a une instruction sur la même ligne (et si cette instruction ne commence par par un mot-clé). A l'intérieur du corps d'une fonction, vous pouvez mettre toute instruction, sauf une déclaration de haut niveau (classe, enum) ou une autre fonction. Vous pouvez avoir plusieurs instructions de retour et toutes doivent avoir les mêmes types d'objets définis dans l'en-tête de la fonction.
Cela pourrait être écrit plus simplement: int multiply(int x, int y) return x * y Fonction ne retournant rien Si la fonction ne retourne aucune valeur, le type de retour est void, et l'instruction return n'a pas de paramètre.
Valeurs multiples Si la fonction retourne plusieurs valeurs, elle doit avoir plusieurs types de retour et l'instruction de retour à plusieurs paramètres (dans le même ordre que les types de retour).
Revenons sur return Quelque fois le code de fin d'une fonction semble inutile.
L'instruction return terminale n'est jamais atteinte, mais elle est néammoins requise, et elle doit avoir le format correct en fonction selon l'interface défini en première ligne. Il est toujours possible de réécrire plus simplement un cas de ce genre, comme le montre l'exemple encadré.
Scope et fonction Le scope est un niveau de l'espace de visibilité des objets déclarés. Une fonction ouvre un nouveau scope pour toutes les variables déclarées à l'intérieur. Si la fonction est dans le scope global, toutes les variables globales compilées avant la fonction sont visibles dans la fonction. On ne peut redéclarer dans la fonction une variable avec le même nom qu'une variable globale. Si la fonction est une méthode d'une classe, toutes les variables déclarées dans la classe avant la fonction sont visibles dans la fonction. Les variables et instances déclarés dans la fonction sont visibles dans les scopes intérieurs, autrement dit dans les structures de contrôle à l'intérieur de la fonction.
|