next up previous contents index
Next: Objets littéraux Up: Eléments du langage Previous: Variables

Réflexion : la variable self

 

Il est possible pour le receveur d'un message de s'envoyer un message. La construction syntaxique pour cela est la pseudo variable self , qui désigne le receveur. Nous définissons ainsi des méthodes récursives , comme la fonction factorielle. La fonction factorielle est définie dans la classe des entiers. Le corps de la méthode est une alternative sur la valeur de l'entier. Si l'entier est nul alors la factorielle est égale à 1 sinon elle est égale au produit de l'entier par la factorielle de son précédent.

factorielle
   ``rend la valeur factorielle du receveur''
   self = 0
      ifTrue: [^1]
      ifFalse: [^self * (self -1) factorielle]

En Smalltalk, une expression alternative est est codée par un envoi de message à un objet expr_bool de type booléen (de classe Boolean) : expr_bool ifTrue:[bloc1] ifFalse: [bloc2]. Cet envoi de message a deux paramètres de type bloc. Un bloc est une suite d'instruction évaluée uniquement à l'exécution. La notion de bloc est détaillée dans la section 3.4.2. L'envoi de message est évalué comme suit : si le booléen est vrai le bloc bloc1 est exécuté sinon le bloc bloc2 est exécuté. Notez que le retour du résultat d'une opération se fait en préfixant par ^ . Il s'agit d'une sortie inconditionnelle de la méthode en cours.



Pascal Andre
Tue Jun 8 12:20:44 GMT 1999