Previous: Séquences et Cascades Up: Éléments de syntaxe Next: Terminaison

Blocs et structures de contrôle

Les blocs sont des objets Smalltalk qui représentent du code compilé mais non encore évalué. Un bloc est compris entre crochets ([]).

Exercice 17 Évaluez les différentes expressions :

  1. []
  2. [Transcript show: 'différé';cr]
  3. [Transcript show: 'différé';cr] value
  4. [:paramètre | 2 * paramètre] value: 4
  5. [:paramètre | 2 * paramètre. 3 * paramètre] value: 4
  6. [:paramètre | | temp | t := 2 * paramètre. t * paramètre] value: 4
  7. [:paramètre | | temp | temp := 2 * paramètre. temp * paramètre] value: 4
  8. [:p1 :p2 | p1 / p2] value: 4 value: 2
    

Un bloc possède la même forme qu'une méthode. Il dispose d'une liste de paramètres, indiqués avant la barres verticale, d'une liste optionnelle de variables temporaires entre deux barres verticales supplémentaires, et d'une succession d'expression.

Le résultat de l'évaluation du bloc s'obtient en lui envoyant le message value. L'objet retourné est le résultat de la dernière expression évaluée.

Les messages que peut recevoir un bloc sont, respectivement pour 0, 1, 2, 3, 4 et n paramètres, value, value:, value:value:, value:value:value:, value:value:value:value:, et value anArrayOfNArguments.

___________________________________________

Exercice 18 Regardez à nouveau la manière de répondre à ifTrue:ifFalse:, pour avoir un exemple d'utilisation des blocs.

Indications ...

___________________________________________

beugnard@enst-bretagne.fr