Semantics of toString

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Nov 10 16:39:21 PST 2009


Denis Koroskin wrote:
> On Wed, 11 Nov 2009 02:49:54 +0300, Andrei Alexandrescu 
> <SeeWebsiteForEmail at erdani.org> wrote:
> 
>> 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.
>>>>
>>>> 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.
>>>  }
>>
>> I think the best option for toString is to take an output range and 
>> write to it. (The sink is a simplified range.)
>>
>> Andrei
> 
> It means toString() must be either a template, or accept an abstract 
> InputRange interface?

It should take an interface.

Andrei



More information about the Digitalmars-d mailing list