www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Customizing printing of structs (writeln / to!sth behavior).

reply ciechowoj <keepitsimplesirius gmail.com> writes:
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)".
Feb 15 2016
parent cym13 <cpicard openmailbox.org> writes:
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] }
Feb 15 2016