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
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
Thanks Denis.
There is refactoring which sadly not available from menu. But you can evaluate it manually:
(RBGenerateEqualHashRefactoring className: #YourClass variables: #(var1 var2)) execute
My problem is display in this image. In the left the inspector display all the items in the bag ( it's right ) In the right the inspector display the relative Occurences, but some are set to 0. Because ? Thanks for considerations, Dario
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
participants (2)
-
Denis Kudriashov -
Trussardi Dario Romano