Am 31.07.2014 03:07, schrieb Andrei Alexandrescu:
A coworker asked about the idiomatic way to get the hash of a string in
D, and somewhat surprisingly the best answer I could find is: "to get
the hash of an lvalue x, call typeof(x).getHash(&x)."

That's admittedly quite clunky and indirect. Is it worth it to simplify
that by means of a template in object.di?


Andrei

I proposed something like the following in another thread and think it would be really useful (to implement toHash() amongst other things):

hash_t createHash(T...)(T args)
{
   // return a hash over all arguments
}

In that thread (I think it was "WAT: opCmp and opEquals woes") it was implied that currently the compiler generates a toHash() automagically by hashing all members (of a struct or class) - analogous to opEquals that just compares all members. I can't find any documentation on that behavior.. but if it indeed exists there must already be a sensible hash algorithm for multiple values of different types which could just be reused here.

Of course hashing a single value is just a special case of this.

Cheers,
Daniel

Reply via email to