There is refactoring which sadly not available from menu. But you can evaluate it manually:(RBGenerateEqualHashRefactoring className: #YourClass variables: #(var1 var2)) execute
2017-02-20 13:46 GMT+01:00 Trussardi Dario Romano <dario.trussardi@tiscali.it>:Ciao,
i works with Pharo 4.0 environment.
I have a class Product with some instance variable and the = method set to:
= anItem
anItem ifNil:[^false].
anItem class = self class ifFalse:[ ^false].
^ rfrConsegna = anItem rfrConsegna
and:[ rfrSubTable = anItem rfrSubTable
and:[ rfrDcm = anItem rfrDcm
and:[ indexRiga = anItem indexRiga
and:[ referenceTime = anItem referenceTime
and:[ consumer = anItem consumer
and:[ item = anItem item
and:[ opzioniVoce = anItem opzioniVoce
]]]]]]]
Some of these variables are instances of classes with specific implementation and some variables themselves.
I set the relative hash method to:
hash
^ rfrConsegna hash
bitXor:( rfrSubTable hash
bitXor: ( rfrDcm hash
bitXor: ( indexRiga hash
bitXor: ( referenceTime hash
bitXor: ( consumer hash
bitXor: ( item hash
bitXor: ( opzioniVoce hash
)))))))
Now when add some setup instances of class Product to a bag,
the relative inspector report
some aProduct entry but with some Occurences of this set to 0.
aProduct1 3
aProduct2 0
aProduct3 0
Some consideration about it ?
Some references about hash implementations ?
Thanks,
Dario