Well, in fact Boolean class has no instances, the boolean value true is an instance of True class, you should look at the ifTrue: methods in the subclasses of Boolean True and False.��

But also, ifTrue: expressions are inlined, as the comment says in the code you posted. So I think that all this ifTrue: methods are never actually executed.

2016-10-31 14:17 GMT+01:00 CodeDmitry <dimamakhnin@gmail.com>:
I am looking at

ifTrue: alternativeBlock
�� �� �� �� "If the receiver is false (i.e., the condition is false), then the value is
the
�� �� �� �� false alternative, which is nil. Otherwise answer the result of evaluating
�� �� �� �� the argument, alternativeBlock. Create an error notification if the
�� �� �� �� receiver is nonBoolean. Execution does not actually reach here because
�� �� �� �� the expression is compiled in-line."

�� �� �� �� self subclassResponsibility

In order to perform the block, ifTrue must somehow end up evaluating the
block, but this code only sends a subclassResponsibility message to itself
and implicitly returns itself.

Where does the block actually get evaluated?




--
View this message in context: http://forum.world.st/How-does-Boolean-ifTrue-work-tp4920873.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.