[Newbies] reimplementing #= and #hash

Janko Mivšek janko.mivsek at eranova.si
Sun Sep 23 13:27:58 UTC 2007


Hi Ching,

#= is test for equality while #== is test for identity. What do you 
probably want is to override #= to compare two PoolQueues if they are 
equal or not. But what "equal" means in your case is on you to define. 
Maybe something like this:

PoolQueue>>= anotherPoolQueue

   ^(self member = anotherPoolQueue member)
	and: [self processor = anotherPoolQueue member]

But be sure that also member and processor instvars understand #= in a 
correct way. All numbers, strings, symbols etc. understand equality as 
expected.

I hope this helps a bit.
Janko


Ching de la Serna wrote:
> Hi List,
> 
> I have a Class PoolQueue which has instvars 'member' and 'processor'. I 
> find that an instance of PoolQueue when placed in an OrderedCollection 
> can no longer be considered equal. I suppose I have to reimplement #= 
> and #hash to allow PoolQueue instances to be compared.
> 
> My problem: how do I implement #hash? Or stated another way, what does 
> #hash accomplish?
> 
> Thanks in advance.
> 
> Ching.
> 

-- 
Janko Mivšek
AIDA/Web
Smalltalk Web Application Server
http://www.aidaweb.si


More information about the Beginners mailing list