Den 11.03.2010 01:54, skrev Nicolas Cellier:
> 2010/3/11 Igor Stasenko <[email protected]>:
>   
>> On 10 March 2010 15:07, Nicolas Cellier
>> <[email protected]> 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 <[email protected]>:
>>>       
>>>> 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
>>>> [email protected]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>>         
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [email protected]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>       
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>     
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
>   

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to