Portée lexicale - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs est disponible ici.
Langages à objets
C++ - C# - D
Delphi - Eiffel - Groovy
Java - Lisaac - Python - Ruby
Simula - Smalltalk
Visual Basic - WLangage
Langages impératifs
APL - ASP - Assembleur
BASIC - C - Cobol - Natural
Forth - Fortran - Limbo
Logo - Pascal - Perl - PHP
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme - XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Voir aussi
Conception - Codage
Tests - Optimisations

En informatique, la portée lexicale (dite également portée statique), est une méthode pour déterminer la portée d'une variable en fonction de sa position dans le code.

Une variable est dite lexicale si sa portée est définie par le texte du programme. Par exemple, une variable nommée balance :

(defun solde (balance)
...
(lambda (foo bar)
(+ (* foo balance) bar))
...)

Cette variable est définie dans la portée de la fonction solde, à partir de la liste des paramètres, et jusqu'à la fin de la définition de la fonction. La fermeture lexicale (dénotée par l'expression lambda) utilise la définition lexicale de balance de la fonction solde : c'est une capture de variable lexicale ; la variable ainsi capturée a la durée de vie de la fonction qui la capture, qui peut excéder la durée d'un appel à solde ; mais la portée de cette capture est strictement limitée par le texte de la fermeture.

Elle est garantie ne pas interférer avec une autre variable de même nom qui serait définie dans un fragment de code du programme hors de la fonction solde, ou encore avec la variable nommée balance dans d'autres appels de la même fonction. Cela assure au programmeur que les variables privées ne sont pas accidentellement accédées ou modifiées par d'autres fonctions. Cela est considéré comme une amélioration considérable par rapport à la combinaison de portée globale et portée dynamique plus anciennes.

La portée lexicale fut d'abord introduite par le langage Algol, puis utilisée par d'autres langages depuis. Certains langages ont introduit la portée lexicale dans leurs incarnations les plus modernes, comme Perl. D'autres offrent les variables dynamiques et lexicales, par choix (Common Lisp) ou par le fait d'une évolution progressive (Emacs Lisp, avec lexical-let).

Voir également : fermeture, fermeture lexicale, portée dynamique, environnement lexical, environnement dynamique

Page générée en 0.081 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise