toString or not toString

Paul D. Anderson paul.d.removethis.anderson at comcast.andthis.net
Tue Aug 30 17:59:06 PDT 2011


Can someone clarify for me the status and/or direction of string formatting in D? 

We've got:

1. toString, the object method with no parameters.
2. toString(sink, format)
3. to!String()
4. format
5. writef/writefln
6. write/writeln

I realize these exist for various reasons, some (1,3) are simple (unformatted) conversions, others (2,4-6) are designed to provide configurable formatting. The problem is that they are inconsistent with each other.

Using std.bigint as an example: 1, 3, 4 and 6 don't work, or don't work as expected (to me at least). 1. prints 'BigInt', 3 and 4 are compile errors.

I know bigint is a controversial example because Don has strong feelings against 1 and favors 2. (See bug #5231). I don't really have an opinion one way or the other but I need to know what to implement in my arbitrary-precision floating point module. This obviously relies heavily on bigint.

So, is there a transition underway in the language (or just Phobos) from toString, writeln and format, to toString(sink,format) and writefln?

Or is this just a divergence of views, both of which are acceptable and we'll have to get used to choosing one or the other?

Or am I just mistaken in believing there is any significant conflict?

I apologize if this has already been hashed out in the past and, if so, I would appreciate someone pointing me to that discussion. (Or just the results of the discussion.)

Paul


More information about the Digitalmars-d mailing list