[squeak-dev] Boolean whenTrue:whenFalse:

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Thu May 16 15:08:48 UTC 2019


Hi,
Ah yes, it works, no need for extra [] value

    (3 > 2) ifTrue: [Transcript cr; show: 'bingo!']; yourself

The code is not optimized, but it works.

Le jeu. 16 mai 2019 à 16:52, Torge Husfeldt <torge.husfeldt at gmx.de> a
écrit :

> Salut Nico,
>
> please excuse if my squeak knowlege is a bit rusty, but wouldn't this do
> the job:
>
> self findlast: [:each |
>
> [self testSomeConditionFor: each] value ifTrue:[self
> performSomeAction:each]; yourself.
>
> ].
>
> Just an idea. And very sad that I have to wrap the condition in a block,
> but I guess othewise the recipient for "yourself" would be "self"
> On 14.05.19 17:02, Nicolas Cellier wrote:
>
> Oups, my example was a bit stupid because findLast: loop stops at first
> true, but you get my intention...
> Replace with select:/reject: or provide a whenFalse: side effect...
>
> Le mar. 14 mai 2019 à 16:23, Nicolas Cellier <
> nicolas.cellier.aka.nice at gmail.com> a écrit :
>
>> Hi,
>> From time to time, I need to perform some additional action (side effect)
>> when a boolean is true, but preserve that boolean as return value.
>>
>> Here is a pseudo example:
>>
>>     self findLast: [:each |
>>         | conforming |
>>         conforming := self testSomeConditionFor: each.
>>         conforming
>>             ifTrue:
>>                 [ "found one, do some side effect before searching next"
>>                 self performSomeAction: each ].
>>          conforming ].
>>
>> Or shorter, but I dislike the redundant true:
>>
>>     self findLast: [:each |
>>         (self testSomeConditionFor: each)
>>             and:
>>                 [ "found one, do some side effect before searching next"
>>                 self performSomeAction: each.
>>                 true ]].
>>
>> What i seek is even shorter:
>>
>>     self findLast: [:each |
>>         (self testSomeConditionFor: each)
>>             whenTrue:
>>                 [ "found one, do some side effect before searching next"
>>                 self performSomeAction: each ]].
>>
>> Of course, we would have companions whenFalse:, whenTrue:whenFalse:...
>> Would you buy it?
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190516/3a87173e/attachment.html>


More information about the Squeak-dev mailing list