Résumé
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. 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 Algol, PL/I, Pascal, Ada, Fortran, Scheme, Common Lisp, Python, D et Perl. 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. Référence circulaire Pile d'appel Catégorie:Code source Ca
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.