> On 09 Oct 2015, at 16:21, Gabriel Cotelli <[email protected]> wrote:
> 
> If the collection implements = using the objects it holds then you need to 
> consider at least some of them in the hash calculation. I can't conceive a 
> hash calculation for this case independent of the contents (well,  just 
> hardcode a number but this will lead to always collide if used as a key in a 
> hashed collection).

it is not :)

> 
> I'm with Levente here, I think the hash implementation is reasonable. And I 
> wouldn't use a mutable object as key in a hashed collection.

no idea… I’m not using it, just arrive to that method random and I cannot 
understand it. 
I still believe is wrong. 

Esteban

> 
> On Fri, Oct 9, 2015 at 11:07 AM, Esteban Lorenzano <[email protected] 
> <mailto:[email protected]>> wrote:
> but that’s an error, I think.
> a collection has to have always same hash… no matter its size (because is not 
> an array) and no matter his elements.
> 
> 
> > On 09 Oct 2015, at 15:21, Levente Uzonyi <[email protected] 
> > <mailto:[email protected]>> wrote:
> >
> > You simply don't modify _objects_ which are used as keys in hashed 
> > collections. Or if you do so, you'll have to deal with the consequences 
> > yourself.
> >
> > Levente
> >
> > On Fri, 9 Oct 2015, Esteban Lorenzano wrote:
> >
> >> Hi,
> >>
> >> Can anyone explain me how this is correct?
> >>
> >> Collection>>#hash
> >>      "Answer an integer hash value for the receiver such that,
> >>        -- the hash value of an unchanged object is constant over time, and
> >>        -- two equal objects have equal hash values"
> >>
> >>      | hash |
> >>
> >>      hash := self species hash.
> >>      self size <= 10 ifTrue:
> >>              [self do: [:elem | hash := hash bitXor: elem hash]].
> >>      ^hash bitXor: self size hash
> >>
> >>
> >> I mean… a hash that changes when I add elements to the collection… how can 
> >> this work?
> >>
> >> Esteban
> 
> 
> 

Reply via email to