On Saturday, 10 November 2012 at 18:18:07 UTC, Joseph Rushton Wakeling wrote:
On 11/07/2012 07:38 AM, "Raphaël.Jakse" <raphael.ja...@gmail.com>"@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());
}

Reply via email to