Condition
ifTrue: quelque chose
ifFalse: autre chose
Condition est un objet de type booléen à qui on envoie deux messages (ifTrue et ifFalse, avec à chaque fois un bloc comme argument).
En fait, ifTrue:ifFalse: est une méthode de la classe abstraite Boolean avec une implémentation différente dans les sous-classes concrètes True et False. Voici l'implémentation de la méthode dans la classe True:
True>>ifTrue: trueBlock ifFalse: falseBlock
^ trueBlock value
La première ligne est la signature de la méthode ifTrue:ifFalse: qui prend 2 arguments (trueBlock et falseBlock). La deuxième ligne est l'implémentation qui retourne la valeur du premier argument. Dans la classe False, l'implémentation est la même sauf que c'est la valeur du deuxième argument qui est retournée. Grâce à ça, le langage n'a pas besoin de if/then/else.
Dans le code de l'article, un seul messageifTrue:ifFalse: est envoyé à l'objet Condition pour que la méthode du même nom soit exécutée, et non pas deux.
# Petite correction sur l'envoie de message
Posté par Damien Cassou . En réponse à la dépêche Pharo : quoi de neuf ?. Évalué à 4.
En fait,
ifTrue:ifFalse:est une méthode de la classe abstraiteBooleanavec une implémentation différente dans les sous-classes concrètesTrueetFalse. Voici l'implémentation de la méthode dans la classeTrue:La première ligne est la signature de la méthode
ifTrue:ifFalse:qui prend 2 arguments (trueBlocketfalseBlock). La deuxième ligne est l'implémentation qui retourne la valeur du premier argument. Dans la classeFalse, l'implémentation est la même sauf que c'est la valeur du deuxième argument qui est retournée. Grâce à ça, le langage n'a pas besoin deif/then/else.Dans le code de l'article, un seul message
ifTrue:ifFalse:est envoyé à l'objetConditionpour que la méthode du même nom soit exécutée, et non pas deux.