Hi Sean. I did not know about quality of generated hash function. But if I remember correctly the same code is generated for java using Eclipse or Idea. So it should be good enough. 2017-10-02 16:37 GMT+02:00 Sean P. DeNigris <sean@clipperadams.com>:
Denis Kudriashov wrote
I just use RBGenerateEqualHashRefactoring for this:
r := RBGenerateEqualHashRefactoring className: MyClass variables: #(vars which should be used in equal and hash). r execute
That is sooooo cool! I shudder to think how many times I implemented just that by hand!!
Two questions/comments about the generated code: 1. #= ... self class = anObject class "should compare #species instead?" ifFalse: [ ^ false ]. ... Typically, I've seen #species instead of #class in the guard statement. Should we change it to that?
2. #hash ^ var1 hash bitXor: (var2 hash bitXor: var3 hash) Is this implementation always safe? It's what I usually hand roll based on what I've seen, but Andres Valloud wrote a whole (large) book on hashing, so I've always wondered if I was missing somethingâ¦
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html