Not just more readable. They can also be more efficient. Look at #select:thenCollect: in OrderedCollection:
select: selectBlock thenCollect: collectBlock
" Optimized version Collection>>#select:thenCollect: "
| newCollection element |
newCollection := self copyEmpty.
firstIndex to: lastIndex do: [ :index |
element := array at: index.
(selectBlock value: element)
ifTrue: [ newCollection addLast: (collectBlock value: element) ]].
^ newCollection
It only uses one temp collection, where a #select: followed by a separate #collect: would need two.
___
montyos.wordpress.com
> Sent: Thursday, June 07, 2018 at 8:20 AM
> From: "Tim Mackinnon" <
[hidden email]>
> To: "Pharo Users Newsgroup" <
[hidden email]>
> Subject: [Pharo-users] Why do #select:thenXxx methods not return their result
>
> Hi - are the methods like #select:thenCollect: frowned upon?
>
> They seem quite readable , however in using them I’ve noticed that unlike the core methods they done return the result of evaluation (they are missing a ^). This is a shame, but possibly an oversight?
>
> Tim
>
> Sent from my iPhone
>
>