Semantics of toString
Steven Schveighoffer
schveiguy at yahoo.com
Tue Nov 10 05:08:58 PST 2009
On Tue, 10 Nov 2009 07:49:11 -0500, Justin Johansson <no at spam.com> 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.
>>
>> }
>
> That's starting to look like a "serialize" method!
As it should. I should be able to print a 10000 element container without
having to load a string representation of 10000 elements in memory.
I'd also like to see the name toString changed to something more
appropriate, like output().
And although I think a direct translation is mostly possible, emulating
writefln string formatting from tango would be a burden. I don't know if
there's any way around it without coming up with some complicated
"formatting provider" interface/object implementation, and I don't think
it's worth it.
Unfortunately, I doubt Walter accepts this, it's been proposed in the past
without success.
-Steve
More information about the Digitalmars-d
mailing list