? toString(?)

Jonathan M Davis jmdavisProg at gmx.com
Thu Jun 9 10:33:22 PDT 2011


On 2011-06-09 08:38, simendsjo wrote:
> Object contains toString as the following:
> string toString();
> 
> But there are also other versions going about:
> void toString(void delegate(const(char)[]) sink, string fmt);
> void toString(void delegate(const(char)[]) sink, FormatSpec fmt);
> 
> I wouldn't be surprised to see some range based version too.
> Where are the different versions required, and what is best practice
> when implementing toString?

At this point, I believe that the typical thing is to just implement

string toString();

There's a proposal for a replacement for toString (writeTo IIRC) which would 
write to a buffer (which was a scoped delegate IIRC), and then we'd be using 
to!string() (which would call writeTo) instead of toString() and toString 
would go away. But that proposal hasn't gone through yet (though I expect it 
to eventually).

If Object has those overloads for toString, then you can overload them if you 
want to, but I'm not quite sure what uses them at this point. I think that 
most people just overload the normal toString. There are some people though 
(such as Don) who really don't like how that creates a string every time that 
you call it, so you can't reuse a buffer. I expect that the delegate versions 
of toString are precursors to the writeTo proposal.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list