[squeak-dev] Boolean whenTrue:whenFalse:
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Fri May 17 17:32:54 UTC 2019
Le ven. 17 mai 2019 à 19:20, Nicolas Cellier <
nicolas.cellier.aka.nice at gmail.com> a écrit :
> Hi Torge,
> considering that I'm probably the one who made cascading work for inlined
> messages, I'm happy enough with your suggestion ;)
> https://marc.info/?l=squeak-dev&m=123180721604241&w=2
>
> I thought I once proposed some Compiler changes to make the cacaded
> inlined message still optimized, but I can't find them anymore.
> It was rejected as overkill (two many changes for so few value)
>
if couse, it was not two, but many more, too many
>
>
> Le ven. 17 mai 2019 à 18:08, Torge Husfeldt <torge.husfeldt at gmx.de> a
> écrit :
>
>> Hi Subbu,
>> see, I forgot about the good old simple parantheses. As I said, rusty.
>> I’d say, if we don’t reach unanimity regarding the new selectors, this
>> shortcut should fit the bill for your initial request?
>>
>> Von meinem iPhone gesendet
>>
>> > Am 17.05.2019 um 13:02 schrieb K K Subbu <kksubbu.ml at gmail.com>:
>> >
>> > This also works:
>> >
>> > ('isBoolean' beginsWith: 'is') ifTrue: [Display flash: World bounds];
>> yourself
>> >
>> > Regards .. Subbu
>> >
>> >> On 16/05/19 8:43 PM, Torge Husfeldt wrote:
>> >> Hi Nico,
>> >> I'm convinced this only works without the extra [] value because you
>> chose a special selector. For keyword-selector it should go to "self".
>> >> Which part exactly is not optimized? The "ifTrue:" has a special
>> handling in the bytecode complier, and iirc yourself is also not "actually
>> sent".
>> >> Cdlt
>> >> Torge
>> >>> On 16.05.19 17:08, Nicolas Cellier wrote:
>> >>> 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
>> <mailto: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
>> >>>> <mailto: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/20190517/5a4cc9c6/attachment.html>
More information about the Squeak-dev
mailing list
|