FUNCTION |
Fonction |
---|---|
VB .NET (Visual Basic .NET) |
Syntaxe
Function nom[[(arguments)] As typeretour ... End Function |
Syntaxe simplifié |
[ attributelist ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async | Iterator ] Function nom [ (Of typeparamlist) ] [ (arguments) ] [ As typeretour ] [ Implements implementslist | Handles eventlist ] [ statements ] [ Exit Function ] [ statements ] End Function |
Syntaxe avancé |
Paramètres
Nom | Description |
---|---|
nom | Ce paramètre permet d'indiquer le nom de la fonction. |
arguments | Ce paramètre permet d'indiquer les arguments de la fonction. |
typeretour | Ce paramètre permet d'indiquer le type de retour de la fonction. |
Description
Cette instruction permet de définir une fonction.
Remarques
- Tout le code exécutable doit être à l'intérieur d'une procédure. Chaque procédure, à son tour, est déclarée dans une classe, une structure ou un module appelé classe, structure ou module conteneur.
- Pour renvoyer une valeur au code appelant, utilisez une procédure Function ; sinon, utilisez une procédure Sub.
- Définir une fonction : Vous ne pouvez définir une procédure Fonction qu'au niveau du module. Par conséquent, le contexte de déclaration d'une fonction doit être une classe, une structure, un module ou une interface et ne peut pas être un fichier source, un espace de noms, une procédure ou un bloc. Les procédures de fonction sont par défaut en accès public. Vous pouvez ajuster leurs niveaux d'accès avec les modificateurs d'accès. Une procédure Function peut déclarer le type de données de la valeur renvoyée par la procédure. Vous pouvez spécifier n'importe quel type de données ou le nom d'une énumération, d'une structure, d'une classe ou d'une interface. Si vous ne spécifiez pas le paramètre typeretour, la procédure renvoie Object.
- Si cette procédure utilise le mot clef Implements, la classe ou la structure conteneur doit également avoir une instruction Implements suivant immédiatement son instruction Class ou Structure. L'instruction Implements doit inclure chaque interface spécifiée dans implementslist. Cependant, le nom par lequel une interface définit la fonction (dans le nom défini) n'a pas besoin de correspondre au nom de cette procédure (dans le nom).
- Vous pouvez utiliser des expressions lambda pour définir des expressions de fonction en ligne.
- Retour d'une fonction : Lorsque la procédure Function retourne au code appelant, l'exécution se poursuit avec l'instruction suivant l'instruction ayant appelé la procédure. Pour renvoyer une valeur à partir d'une fonction, vous pouvez soit affecter la valeur au nom de la fonction, soit l'inclure dans une instruction Return. L'instruction Return affecte simultanément la valeur de retour et quitte la fonction, comme le montre l'exemple suivant :
- Les instructions Exit Function et Return provoquent une sortie immédiate d'une procédure Function. N'importe quel nombre d'instructions Exit Function et Return peuvent apparaître n'importe où dans la procédure, et vous pouvez mélanger les instructions Exit Function et Return. Si vous utilisez Exit Function sans affecter de valeur à nom, la procédure renvoie la valeur par défaut pour le type de données spécifié dans typeretour. Si typeretour n'est pas spécifié, la procédure renvoie Nothing, étant la valeur par défaut pour Object.
- Appel d'une fonction : Vous appelez une procédure Function en utilisant le nom de la procédure, suivi de la liste de paramètres entre parenthèses, dans une expression. Vous ne pouvez omettre les parenthèses que si vous ne fournissez aucun paramètre. Cependant, votre code est plus lisible si vous incluez toujours les parenthèses.
- Vous appelez une procédure Function de la même manière que vous appelez n'importe quelle fonction de bibliothèque telle que Sqrt, Cos ou ChrW.
- Vous pouvez également appeler une fonction à l'aide du mot-clef Call. Dans ce cas, la valeur de retour est ignorée. L'utilisation du mot-clef Call n'est pas recommandée dans la plupart des cas.
- Le Visual Basic réorganise parfois les expressions arithmétiques pour augmenter l'efficacité interne. Pour cette raison, vous ne devez pas utiliser une procédure Function dans une expression arithmétique lorsque la fonction modifie la valeur des variables dans la même expression.
- Fonctions désynchronisées : La fonctionnalité Async vous permet d'appeler des fonctions désynchronisées sans utiliser de rappels explicites ni fractionner manuellement votre code entre plusieurs fonctions ou expressions lambda. Si vous marquez une fonction avec le modificateur Async, vous pouvez utiliser l'opérateur Await dans la fonction. Lorsque le contrôle atteint une expression Await dans la fonction Async, le contrôle revient à l'appelant et la progression de la fonction est suspendue jusqu'à ce que la tâche attendue se termine. Lorsque la tâche est terminée, l'exécution peut reprendre dans la fonction. Une procédure Async retourne à l'appelant lorsqu'elle rencontre le premier objet attendu n'étant pas encore terminé, ou qu'elle arrive à la fin de la procédure Async, selon la première éventualité. Une fonction Async peut avoir un type de retour Task<TResult> ou Task. Une fonction Async ne peut déclarer aucun paramètre ByRef. Une instruction Sub peut également être marquée avec le modificateur Async. Ceci est principalement utilisé pour les gestionnaires d'événements, où une valeur ne peut pas être renvoyée. Une procédure Async Sub ne peut pas être attendue et l'appelant d'une procédure Async Sub ne peut pas intercepter les exceptions levées par la procédure Sub.
- Fonctions d'itérateur : Une fonction d'itérateur effectue une itération personnalisée sur une collection, telle qu'une liste ou un tableau. Une fonction d'itération utilise l'instruction Yield pour renvoyer chaque élément un à la fois. Lorsqu'une instruction Yield est atteinte, l'emplacement actuel dans le code est mémorisé. L'exécution est redémarrée à partir de cet emplacement la prochaine fois que la fonction d'itérateur est appelée. Vous appelez un itérateur à partir du code client à l'aide d'une instruction For Each...Next. Le type de retour d'une fonction d'itération peut être IEnumerable, IEnumerable<T>, IEnumerator ou IEnumerator<T>.
L'exemple suivant affecte la valeur de retour au nom de fonction MaFonction, puis utilise l'instruction Exit Function pour retourner :
Exemple
Voici un exemple permettant d'afficher le logarithme inférieurs à 2 en utilisant le mot réservé «FUNCTION» :
on obtiendra le résultat suivant :
LOG(0.100000)=-2.302585LOG(0.200000)=-1.609438
LOG(0.300000)=-1.203973
LOG(0.400000)=-0.916291
LOG(0.500000)=-0.693147
LOG(0.600000)=-0.510826
LOG(0.700000)=-0.356675
LOG(0.800000)=-0.223143
LOG(0.900000)=-0.105360
LOG(1.000000)=0.000000
LOG(1.100000)=0.095310
LOG(1.200000)=0.182322
LOG(1.300000)=0.262364
LOG(1.400000)=0.336472
LOG(1.500000)=0.405465
LOG(1.600000)=0.470004
LOG(1.700000)=0.530628
LOG(1.800000)=0.587787
LOG(1.900000)=0.641854
Dernière mise à jour : Dimanche, le 9 novembre 2014