[squeak-dev] The Inbox: Collections-ul.844.mcz

Tobias das.linux at gmx.de
Fri Jul 19 07:15:02 UTC 2019

Hi Levente

On Thu, 2019-07-18 at 22:13 +0000, commits at source.squeak.org wrote:
> Levente Uzonyi uploaded a new version of Collections to project The
> Inbox:
> http://source.squeak.org/inbox/Collections-ul.844.mcz
> ==================== Summary ====================
> Name: Collections-ul.844
> Author: ul
> Time: 19 July 2019, 12:08:51.94435 am
> UUID: df5ebfa9-4ebf-4505-8031-afd892a1061c
> Ancestors: Collections-mt.843
> - added String >> #atOrNil: which uses primitive 63 and returns
> either the character at the given index or nil when the primtiive
> fails. This is a faster alternative to #at:ifAbsent: when the absent
> block would yield nil.

Could you tell me the use case here?
This sounds like a convoluted range check.
I mean, yes it would be faster to do

 knorz := 'foo'
 index := 32
 ^ knorz atOrNil: index

but I would rather see

 knorz := 'foo'
 index := 32
 ^ index <= knorz size ifTrue:  [knorz at: size]

or more robust even

 knorz := 'foo'
 index := 32
 ^ knorz atPin: 32

(even though that changes the semantic)

So, can you tell me the use case here?
Best regards

PS: That said, I think using #at: for String in the first place will
bite us down the road, whether we want to change the String
representation at some point (ropes, immutables, values, ...) or just
because Unicode is hard: ('Lèon' at: 3) can surely yield $'̀ ', $e
or $'è'

More information about the Squeak-dev mailing list