|
Microsoft® Visual Basic® Scripting Edition Function, instruction |
Référence du langage Version 1
|
Déclare le nom, les arguments et le code qui forment le corps d'une procédure Function.
[Public | Private]Function name [(arglist)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
La syntaxe de l'instruction Function comprend les éléments suivants:
Élément Description Public Indique que la procédure Function est accessible à toutes les autres procédures dans tous les scripts. Private Indique que la procédure Function est accessible uniquement aux autres procédures du script dans lequel elle est déclarée. name Nom de la procédure Function; respecte les conventions standard d'affectation de nom à des variables. arglist Liste de variables représentant les arguments qui sont transmis à la procédure Function lorsqu'elle est appelée. Plusieurs variables sont séparées par des virgules. statements Tout groupe d'instructions à exécuter dans le corps de la procédure Function. expression Valeur de retour de la procédure Function.
L'argument arglist comporte la syntaxe et les éléments suivants:
[ByVal | ByRef] varname[( )]
Élément Description ByVal Indique que l'argument est transmis par valeur. ByRef Indique que l'argument est transmis par référence. varname Nom de la variable représentant l'argument qui respecte les conventions standard d'affectation de nom à des variables.
En l'absence de spécification explicite par l'intermédiaire de Public ou Private, les procédures Function sont publiques, autrement dit, elles sont visibles pour toutes les autres procédures de votre script. La valeur des variables locales dans une Function n'est pas conservée entre les appels à la procédure.L'ensemble du code exécutable doit être contenu dans des procédures. Vous ne pouvez pas définir une procédure Function à l'intérieur d'une autre procédure Function ou Sub.
L'instruction Exit Function provoque la sortie immédiate d'une procédure Function. L'exécution du programme se poursuit avec l'instruction succédant à l'instruction ayant appelé la procédure Function. Il n'existe pas de limite au nombre d'instructions Exit Function pouvant apparaître n'importe où dans une procédure Function.
À l'instar d'une procédure Sub, une procédure Function est une procédure distincte qui peut prendre des arguments, exécuter une série d'instructions et changer la valeur de ses arguments. Toutefois, contrairement à une procédure Sub, vous pouvez utiliser une procédure Function sur le côté droit d'une expression de la même manière que vous utilisez une fonction intrinsèque comme Sqr, Cos ou Chr, quand vous voulez utiliser la valeur retournée par la fonction.
Vous appelez une procédure Function en utilisant le nom de fonction, suivi de la liste des arguments entre parenthèses, dans une expression. Pour toute information spécifique sur la manière d'appeler les procédures Function, consultez l'instruction Call.
Attention Les procédures Function peuvent être récursives; autrement dit, elles peuvent s'appeler elles-mêmes pour effectuer une tâche donnée. Toutefois la récursivité peut amener au dépassement de la capacité de la pile.
Pour retourner une valeur à partir d'une fonction, affectez cette valeur au nom de la fonction. Il n'existe pas de limite au nombre de ces affectations pouvant apparaître n'importe où dans la procédure. Si aucune valeur n'est affectée à name, la procédure retourne une valeur par défaut: une fonction numérique retourne 0 et une fonction chaîne retourne une chaîne de longueur nulle (""). Une fonction qui retourne une référence d'objet retourne la valeur Nothing si aucune référence d'objet n'est affectée à name (en utilisant Set) dans la Function.L'exemple suivant décrit la manière d'affecter une valeur de retour à une fonction nommée BinarySearch. Dans ce cas, la valeur False est affectée au nom pour indiquer qu'une certaine valeur n'a pas été trouvée.
Function BinarySearch(. . .)
. . .
' Valeur non trouvée. Retourne la valeur False.
If lower > upper Then
BinarySearch = False
Exit Function
End If
. . .
End Function
Les variables utilisées dans les procédures Function se divisent en deux catégories: celles explicitement déclarées dans la procédure et celles qui ne le sont pas. Les premières (déclarées en utilisant Dim ou l'équivalent) sont toujours locales pour la procédure. Les variables qui sont utilisées mais qui ne sont pas explicitement déclarées dans une procédure sont également locales à moins qu'elles n'aient été explicitement déclarées à un niveau supérieur hors de la procédure.
Attention Une procédure peut utiliser une variable qui n'est pas déclarée explicitement dans la procédure, mais un conflit peut se produire si tout élément que vous avez défini au niveau du script porte le même nom que la variable. Si votre procédure fait référence à une variable non déclarée qui porte le même nom qu'une autre procédure, constante ou variable, il est supposé que votre procédure fait référence au nom situé au niveau du script. Déclarez explicitement les variables pour éviter ce type de conflit. Vous pouvez utiliser une instruction Option Explicit pour forcer la déclaration explicite des variables.
Attention VBScript peut réorganiser les expressions arithmétiques de manière à optimiser l'efficacité interne. Évitez d'utiliser une procédure Function dans une expression arithmétique quand la fonction change la valeur des variables dans la même expression.