portée d'une variable
This commit is contained in:
parent
8d16681688
commit
cf1b3ac498
|
@ -107,8 +107,10 @@ Environnement
|
||||||
|
|
||||||
Portée
|
Portée
|
||||||
|
|
||||||
La portée d'une variable est sa condition d'utilisation dans un contexte donné
|
La portée d'un identifiant (une variable) est sa condition d'utilisation dans un contexte donné
|
||||||
(utilisation locale uniquement, ou bien globale, ou bien locale et globale)
|
(utilisation locale uniquement, ou bien globale, ou bien locale et globale)
|
||||||
|
La portée d’une liaison est la portion du code dans laquelle cette
|
||||||
|
liaison est valide (i.e. où un identifiant est lié à une expression).
|
||||||
|
|
||||||
.. ifconfig:: exercice
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
@ -127,6 +129,78 @@ Portée
|
||||||
|
|
||||||
- : int = 1
|
- : int = 1
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: ocaml
|
||||||
|
|
||||||
|
let a = 3 (* première liaison pour l'identifiant a *)
|
||||||
|
let b = 5 and c = 6
|
||||||
|
let somme = a + b + c
|
||||||
|
val somme : int = 14
|
||||||
|
let a = 45 (* deuxième liaison pour l'identifiant a *)
|
||||||
|
somme
|
||||||
|
val a : int = 45
|
||||||
|
|
||||||
|
.. ifconfig:: exercice
|
||||||
|
|
||||||
|
**Exercice** : Que donne ce code ?
|
||||||
|
|
||||||
|
.. code-block:: ocaml
|
||||||
|
|
||||||
|
let a = 3 and b = 4 and c = 8 ;;
|
||||||
|
let somme = a + b + c ;;
|
||||||
|
val somme : int = ???
|
||||||
|
let a = 44
|
||||||
|
let b = 5
|
||||||
|
let c = 1
|
||||||
|
somme
|
||||||
|
- : int = ???
|
||||||
|
|
||||||
|
.. ifconfig:: correction
|
||||||
|
|
||||||
|
.. code-block:: ocaml
|
||||||
|
|
||||||
|
let a = 3 and b = 4 and c = 8 ;;
|
||||||
|
- : int = 15
|
||||||
|
let somme = a + b + c ;;
|
||||||
|
val somme : int = 15
|
||||||
|
let a = 44
|
||||||
|
let b = 5
|
||||||
|
let c = 1
|
||||||
|
somme
|
||||||
|
- : int = 15
|
||||||
|
|
||||||
|
Même code en python
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
>>> a = 1
|
||||||
|
>>> b = 2
|
||||||
|
>>> c = 3
|
||||||
|
>>> somme = a + b + c
|
||||||
|
>>> somme
|
||||||
|
6
|
||||||
|
>>> a = 56
|
||||||
|
>>> b = 5678
|
||||||
|
>>> c = 56789
|
||||||
|
>>> somme
|
||||||
|
6
|
||||||
|
>>>
|
||||||
|
|
||||||
|
Portée locale dans une expression
|
||||||
|
|
||||||
|
.. code-block:: ocaml
|
||||||
|
|
||||||
|
# let a = 2 and b = 3 and c = 4 in
|
||||||
|
let somme = a+b+c in
|
||||||
|
somme
|
||||||
|
- : int = 9
|
||||||
|
# somme ;;
|
||||||
|
Error: Unbound value somme
|
||||||
|
# a ;;
|
||||||
|
Error: Unbound value a
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Exemple de variable globale modifiée localement (** attention, mauvaise pratique ** !) :
|
Exemple de variable globale modifiée localement (** attention, mauvaise pratique ** !) :
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
Loading…
Reference in New Issue