Object.toString, toHash, opCmp, opEquals

An Pham home at home.com
Thu Jun 6 20:03:09 UTC 2024


>
> I talked to Walter and we agreed that the best way forward is 
> probably to deprecate these member functions and remove them in 
> the next edition.

What are the problems when getting rid all of them?
Currently, below codes are compiled with correct result, why not 
emulated without those functions?

struct F
{
     string s;
     int i;
}

void main()
{
     import std.conv : to;

     F f1 = {s:"1", i:1};
     F f2 = {s:"2", i:2};
     const c = int.min; // f2 > f1; onlineapp.d(13): Error: need 
member function `opCmp()` for struct `F` to compare
     const e = f2 == f1;
     const s = f2.to!string;
     const h = hashOf(f2); // f2.toHash(); onlineapp.d(16): Error: 
no property `toHash` for `f2` of type `onlineapp.F`

     import std.algorithm, std.stdio, std.file, std.range;
     writeln("c=", c, ", e=", e, ", s=", s, ", h=", h);
}





More information about the Digitalmars-d mailing list