Procédures de fonction (Visual Basic)
Une procédure Function
est une série d’instructions Visual Basic placées entre les instructions Function
et End Function
. La procédure Function
effectue une tâche, puis retourne le contrôle au code appelant. Lorsqu’elle retourne le contrôle, elle retourne également une valeur au code appelant.
Chaque fois que la procédure est appelée, ses instructions s’exécutent, en commençant par la première instruction exécutable après l’instruction Function
et se terminant par la première instruction End Function
, Exit Function
ou Return
rencontrée.
Vous pouvez définir une procédure Function
dans un module, une classe ou une structure. C’est Public
par défaut, ce qui veut dire que vous pouvez l’appeler n'importe quel endroit de votre application ayant accès au module, à la classe ou à la structure dans laquelle vous l'avez défini.
Une procédure Function
peut prendre des arguments, tels que des constantes, des variables ou des expressions, qui sont passées à celle-ci par le code appelant.
Syntaxe de déclaration
La syntaxe de déclaration d’une procédure Function
est la suivante :
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
[Statements]
End Function
Les modificateurs peuvent spécifier le niveau d’accès et les informations concernant la surcharge, la substitution, le partage et le shadowing. Pour plus d’informations, consultez Déclaration de fonction.
Vous déclarez chaque paramètre de la même façon que pour les sous-procédures.
Type de données
Chaque procédure Function
a un type de données, tout comme chaque variable. Ce type de données est spécifié par la clause As
de l’instruction Function
et détermine le type de données de la valeur que la fonction retourne au code appelant. Les exemples de déclarations suivants illustrent ceci.
Function Yesterday() As Date
End Function
Function FindSqrt(radicand As Single) As Single
End Function
Pour plus d’informations, consultez « Parties » dans Instruction de fonction.
Retourner des valeurs
La valeur qu’une procédure Function
renvoie au code appelant est appelée sa valeur de retour. La procédure retourne cette valeur selon l’une des deux manières suivantes :
Elle utilise l’instruction
Return
pour spécifier la valeur de retour et retourne immédiatement le contrôle au programme appelant. L'exemple suivant illustre ce comportement.Function FunctionName [(ParameterList)] As ReturnType ' The following statement immediately transfers control back ' to the calling code and returns the value of Expression. Return Expression End Function
Elle affecte une valeur à son propre nom de fonction dans une ou plusieurs instructions de la procédure. Le contrôle ne retourne pas au programme appelant tant qu’une instruction
Exit Function
ouEnd Function
n’est pas exécutée. L'exemple suivant illustre ce comportement.Function FunctionName [(ParameterList)] As ReturnType ' The following statement does not transfer control back to the calling code. FunctionName = Expression ' When control returns to the calling code, Expression is the return value. End Function
L'avantage d'assigner la valeur de retour au nom de la fonction est que le contrôle ne retournera pas la procédure tant qu'il ne rencontre pas une instruction Exit Function
ou End Function
. Cela vous permet d’affecter une valeur préliminaire et de l’ajuster ultérieurement si nécessaire.
Pour plus d’informations sur le retour de valeurs, consultez Instruction de fonction. Pour plus d’informations sur le retour de tableaux, consultez Tableaux.
Syntaxe appelante
Vous invoquez une procédure Function
en incluant son nom et ses arguments à droite d'une instruction d'affectation ou dans une expression. Vous devez fournir des valeurs pour tous les arguments qui ne sont pas facultatifs, et vous devez placer la liste d’arguments entre parenthèses. Si aucun argument n’est fourni, vous pouvez éventuellement omettre les parenthèses.
La syntaxe d’un appel à une procédure Function
est la suivante.
lvalue =
functionname [(
argumentlist )]
If ((
functionname [(
argumentlist )] / 3) <=
expression ) Then
Lorsque vous appelez une procédure Function
, vous n’avez pas besoin d’utiliser sa valeur de retour. Si ce n’est pas le cas, toutes les actions de la fonction sont effectuées, mais la valeur de retour est ignorée. MsgBox est souvent appelé de cette façon.
Illustration de la déclaration et de l’appel
La procédure Function
suivante calcule le côté le plus long, ou hypoténuse, d’un triangle droit, en fonction des valeurs des deux autres côtés.
Function Hypotenuse(side1 As Double, side2 As Double) As Double
Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function
L’exemple suivant montre un appel classique à hypotenuse
.
Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)