[squeak-dev] Not quite literally, let me check the Dictionary...

Igor Stasenko siguctua at gmail.com
Sun May 2 09:26:46 UTC 2010


Same thing:


a := Dictionary with: 1->2

b := Dictionary withAll:  { 1->2 }

self assert: a = b

On 2 May 2010 12:21, Igor Stasenko <siguctua at gmail.com> wrote:
> On 2 May 2010 11:55, Levente Uzonyi <leves at elte.hu> wrote:
>> On Sun, 2 May 2010, Casey Ransberger wrote:
>>
>>> Aha, thank you. That's why I posted :)
>>
>> It's actually Dictionary class >> #newFrom: which can create a dictionary
>> from an array of associations. There are some examples at the end of the
>> method using this feature, but they are flawed, because NewDictionary is not
>> a class).
>> This feature works because every collection understands #associationsDo:
>> (yeah, it's not so nice) and #size, so not just arrays, but any collection
>> of associations can be the argument of #newFrom:.
>>
>
> Ohh. There is a very bad inconsistency with Collection protocol in Dictionary,
> which makes me sad:
>
> | dict array |
>
> dict := Dictionary new.
>
> dict add:  'a' -> 'b'.
>
> self assert: (dict at: 'a') = 'b'.
>
> array := Array with: 'c'->'d'.
>
> dict addAll: array.
>
> self assert: (dict at: 'c') = 'd'
>
>
> Collection>>addAll: comment reads:
>
> addAll: aCollection
>        "Include all the elements of aCollection as the receiver's elements. Answer
>        aCollection. Actually, any object responding to #do: can be used as argument."
>
> Collection>>add: comment reads:
>
> add: newObject
>        "Include newObject as one of the receiver's elements. Answer newObject.
>        ArrayedCollections cannot respond to this message."
>
>
> So, is everyone ok with such dichotomy?
> I am certainly not.
>
> If Dictionary takes an association in its #add:
> then it should also take a collection of associations in #addAll: ?
>
> And if not, then Dictionary>>add:  should not be supported, but
> provide alternative method -  Dictionary>>addAssociation: .
>
>>
>> Levente
>>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list