Semantics of toString

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Nov 10 17:27:45 PST 2009


Bill Baxter wrote:
> 2009/11/10 Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org>:
>> 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.
> 
> So yet another type in object.d?
> Or require users in import something specific in every module that's
> going to use toString?
> 
> --bb

I am not sure. Opinions as always are welcome.

Andrei



More information about the Digitalmars-d mailing list