What about something like this?
^self species hash hashComposer
add: leftFraction;
add: leftOffset;
add: topFraction;
add: topOffset;
add: rightOffset;
add: bottomFraction;
add: bottomOffset
HashComposer>>#add: anObject
^hash := (hash + anObject hash) hashMultiply
Best regards,
Henrik
-----Original Message-----
From: Pharo-dev [mailto:[email protected]] On Behalf Of Stephan
Eggermont
Sent: Wednesday, January 13, 2016 8:34 PM
To: [email protected]
Subject: Re: [Pharo-dev] Bad layoutFrame>>#hash
On 13-01-16 18:38, David Allouche wrote:
> Why did you use a single expression instead of using a temporary variable? I
> find it harder to understand.
I did find it very slightly easier to understand. It is not a strong opinion
however.
The ideomatic smalltalk would be
^#(leftFraction leftOffset topFraction topOffset rightFraction rightOffset
bottomFraction bottomOffset)
inject: self species hash into: [:hashValue :selector |
(hashValue + self perform: selector) hashMultiply ]
but that would be slower.
I would be tempted to add a binary message
Integer>>+** aNumber
^(aNumber +self hash) hashMultiply
(I'd prefer +#*, but that doesn't parse)
hash
^self species hash +**
leftFraction +** leftOffset +**
topFraction +** topOffset +**
rightFraction +** rightOffset +**
bottomFraction +** bottomOffset
Stephan