Den 11.03.2010 01:54, skrev Nicolas Cellier:
2010/3/11 Igor Stasenko <siguctua@gmail.com>:
On 10 March 2010 15:07, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
self collect: aBlock as: Set
One more time, i found this very beatiful and useful extension to Collection protocol. And i am proud being a witness when this thing is born! :)
Yes, I remember saying I was not convinced some times ago... http://lists.squeakfoundation.org/pipermail/squeak-dev/2008-June/129457.html Being able to change own opinion is a good thing !
Nicolas
I have to admit, I still don't quite see what's wrong with 1. (self collect: aBlock) asSet or 2. mySet := Set new: self size. self do: aBlockAddingToMySetAtEnd. or (well, this one is IMO indeed a bit ugly) 3. self inject: (Set new:self size) into: [ :sub :next | sub add: next collectValue; yourself ] ... Sure, they're a bit verbose, and when you'd like to use 1 vs 2 or 3 varies abit on the collection contents, but they all work in all dialects, and aren't THAT much longer, unless your collect block is really short. Cheers, Henry
2010/3/10 Mariano Martinez Peck <marianopeck@gmail.com>:
Hi. I was needing something like the SQL select distinct, that doesn't take into account repeated objects. I didn't found anything useful in Collection, and thus, I have implemented this:
Collection >> collectDistinct: aBlock
collectDistinct: aBlock "Evaluate aBlock with each of the receiver's elements as the argument. Collect the resulting values into a Set, thus repeated objects will not be present. Answer the new collection."
| newSet | newSet := self species new asSet. self do: [:each | newSet add: (aBlock value: each)]. ^ newSet
Is there a better way ? Do you think it make sense to put this in Pharo ?
Cheers
Mariano
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Best regards, Igor Stasenko AKA sig.
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project