AccueilđŸ‡«đŸ‡·Chercher

Fonction imbriquée

Une fonction imbriquĂ©e ou fonction interne est une fonction dont la dĂ©finition est encapsulĂ©e dans une autre fonction. Elle ne peut ĂȘtre appelĂ©e que par la fonction englobante ou par des fonctions imbriquĂ©es directement ou non dans la mĂȘme fonction englobante.

En d'autres termes, la portée de la fonction imbriquée est limitée par la fonction englobante; elle offre un contrÎle trÚs strict de leur visibilité (scope) par le reste du programme.

Exemples

Un exemple avec la syntaxe de Pascal :

 function E(x: integer): integer
 
     function F(y: integer): integer
     begin
         F := x + y
     end
 
 begin
     E := F(3)
 end

Et le mĂȘme exemple avec une syntaxe façon C :

 int E(int x)
 {
     int F(int y)
     {
         return x + y;
     }
     return F(3);
 }

Remarque : Le langage C standard ne supporte pas cette construction. Mais certains compilateurs l'acceptent.

La fonction F est imbriquée dans E (notez que x est visible dans F, mais y est invisible en dehors de F).

Exemple en python :

def pourcentages(a,b,c):
    def pc(x):
        return (x*100.0)/(a+b+c)
    return pc(a),pc(b),pc(c)

Les fonctions imbriquées sont une forme d'encapsulation et sont utilisées pour diviser des tùches procédurales en sous-tùches qui n'ont de signification que locale. Elle permet d'éviter la pollution de l'espace global de noms par des noms de fonctions, variables... dont l'usage est restreint à une petite partie du programme.

Parmi les langages les plus connus qui supportent les fonctions imbriquées, il y a

En Scheme et la plupart des langages fonctionnels, les fonctions imbriquĂ©es sont une maniĂšre commune d'implanter des fonctions comportant des boucles. Une simple fonction imbriquĂ©e rĂ©cursive ou rĂ©cursion terminale est crĂ©Ă©e, qui se comporte comme la boucle principale, alors que la fonction englobante effectue les actions qui ne doivent ĂȘtre faites qu'une fois. Dans les cas plus complexes, plusieurs fonctions mutuellement rĂ©cursives peuvent ĂȘtre crĂ©Ă©es comme des fonctions imbriquĂ©es.

Notes et références

    Voir aussi

    Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.