On Saturday, 10 November 2012 at 18:18:07 UTC, Joseph Rushton
Wakeling wrote:
On 11/07/2012 07:38 AM, "Raphaël.Jakse"
<[email protected]>"@puremagic.com wrote:
We want to be able to get the hash of s. Therefore, we
re-implement the toHash
method of the Student class :
OK, now I'm curious. Assuming I don't write a custom
re-implementation, how would a custom struct or class be
hashed? (What about a tuple?)
I ask because I'm considering associative arrays where the key
is a custom class or tuple as part of a current coding project.
Not sure I understand the question. But here is how I'm doing it.
No guarantees, but output looks promising. Code following output.
Thanks
Dan
-----------------------------
true
false
false
true
7F053B2DCFC0
20883845 vs 20883845
-----------------------------
import std.stdio;
import std.traits;
import std.typecons;
import opmix.mix;
struct S {
mixin(HashSupport);
alias Tuple!(int, char, string) X;
X x;
char[] mutable;
}
void main() {
S s1 = { tuple(3, 'a', "foo".idup), ['a','b'].dup };
S s2 = { tuple(3, 'a', "foo".idup), ['a','b'].dup };
writeln(s1==s2);
s1.x[0]++;
writeln(s1==s2);
writeln(s1<s2);
writeln(s2<s1);
writeln(s1 in [ s1: 3 ]);
s2.x[0]++;
writeln(s1.toHash(), " vs ", s2.toHash());
}