Semantics of toString

grauzone none at example.net
Tue Nov 10 07:32:13 PST 2009


Don wrote:
> Lutger wrote:
>> Don wrote:
>> ...
>>> There is a definite use for such as thing. But the existing toString()
>>> is much, much worse than useless. People think you can do something with
>>> it, but you can't.
>>> eg, people have asked for BigInt to support toString(). That is an
>>> over-my-dead-body.

How are you supposed to print a BigInt then?

>> Since you are in the know and probably the biggest toString() hater 
>> around: are there plans (or rejections thereof) to change toString() 
>> before D2 turns gold? Seems to me it could break quite some code.
> 
> 
> I'm hoping someone will come up with a design.
> 
> Straw man:
> 
> void toString(void delegate(const(char)[]) sink, string fmt) {
> 
> // fmt holds the format string from writefln/formatln.
> // call sink() to print partial results.
> 
> }

Just put it into an "interface DebugOutput", remove Object.toString(), 
and be done with it. That interface could be defined in the same module 
as writefln or format, and its use will be clear.



More information about the Digitalmars-d mailing list