Semantics of toString
Bill Baxter
wbaxter at gmail.com
Tue Nov 10 16:56:49 PST 2009
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
More information about the Digitalmars-d
mailing list