I just thought that "Color" is struct, so it is value type and should be sorted like tuple without extra handwork, isn't it ?

So how i understood it: 'sort' is old buggy sort, but when added parens 'sort()' - now this is nice phobos sort, correct ?


Dfr:

struct Color {
 string fg;
 string bg;
 string attrs;
 int slid;
}

auto tt = [Tuple!(uint, Color)(28, Color("0", "255", "", 0)), Tuple!(uint, Color)(28, Color("0", "255", "", 0))];
tt.sort;

This just dies on "tt.sort", any idea what is wrong ?

Your code has two problems: you are using the buggy built-in sort instead of the Phobos one, and you have not defined an opCmp and opEquals in Color.

If you don't want to define those two methods you can use a tuple again:


import std.stdio, std.algorithm, std.typecons;

struct Color0 {
    string fg, bg, attrs;
    int slid;
}

alias Color = Tuple!(string,"fg", string,"bg", string,"attrs", int,"slid");

void main() {
    alias T = Tuple!(uint, Color);
    auto tt = [T(28, Color("0", "255", "", 0)),
               T(28, Color("0", "255", "", 0))];

    tt.writeln;
    tt.sort(); // Phobos sort.
    tt.writeln;
}


Bye,
bearophile

Reply via email to