On Monday, 15 February 2016 at 12:03:44 UTC, ciechowoj wrote:
It there a way to change how writeln converts structs to strings? I read in the documentation it uses to!string to convert the struct. Is there a way to overload to!string for my own type?

Let say I have:

struct Point {
    int x, y;
}

and I want writeln(Point(3, 4)); to print "[3, 4]" instead of "Point(3, 4)".

Just define a toString method, it will be used by .to!string

    struct Point {
        int x;
        int y;

        string toString() {
            import std.format: format;
            return format("[%d, %d]", x, y);
        }
    }

    void main(string[] args) {
        import std.stdio: writeln;

        auto p = Point(3, 4);
        p.writeln; // [3, 4]
    }

Reply via email to