• # Petite correction sur l'envoie de message

    Posté par . En réponse à la dépêche Pharo : quoi de neuf ?. Évalué à 4.

    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 message ifTrue:ifFalse: est envoyé à l'objet Condition pour que la méthode du même nom soit exécutée, et non pas deux.