On 8. 9. 2019 14:28, Peter Kenny wrote:
Two comments: First, the method comment for Collection>>collect:thenDo: is "Utility method to improve readability", which is exactly the same as for collect:thenSelect: and collect:thenReject:. This suggests that the *intention* of the method is not to introduce new behaviour, but simply to provide a shorthand for the version with parentheses. For other kinds of
I had that same impression.
collection this is true; just the deduping makes Set different. If we want
I would be more defensive here and say that generic collection should have (collect:)do: implementation and only sequenceable collections have the optimized one (if it indeed is the case that it is a shotrhand for parenthesized one).
the different behaviour, this should be indicated by method name and comment. Second, if we remove asSet from the second snippet, the output is exactly the same. It will be the same as long as the original collection has no duplicates. Somehow the effect is to ignore the asSet. It just smells wrong.
Peter Kenny
Herby
Kasper Osterbye wrote
The first version:
(#(1 2 3) asSet collect: #odd) do: [ :each | Transcript show: each; cr ]
is rather straight forward I believe, as collect: and do: has been around forever (relatively speaking).
#(1 2 3) asSet collect: #odd thenDo: [ :each | Transcript show: each; cr ]
On 8 September 2019 at 09.13.36, Richard Sargent (
richard.sargent@
) wrote:
I am skeptical of one that relies on a specific implementation rather than a specific definition.
I share your feeling. I am not sure where such a definition would come from. In Squeak it is defined as:
collect: collectBlock thenDo: doBlock
^ (self collect: collectBlock) do: doBlock
In pharo as:
collect: collectBlock thenDo: doBlock
^ self do: [ :each | doBlock value: (collectBlock value: each)]
I might have called the method collect:eachDo:, but we each have slightly different styles. What I like about the pharo version is that is a shorthand for something which is not achieved by mere parentheses.
Best,
Kasper
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html