On 09/01/2011 09:41 PM, Don wrote:
On 31.08.2011 14:35, Timon Gehr wrote:
On 08/31/2011 04:41 AM, Jonathan M Davis wrote:
Objects would have writeTo and toString would presumably be
deprecated.
I have never understood the rationale behind deprecating toString once
we have writeTo. Why should it be deprecated?
Code bloat. Every struct contains string toString().
Quite unnecessarily, since it can always be synthesized from the more
complete version.
I was just suggesting to keep the existing support for toString() inside
to, format etc. Of course, all the structs in Phobos should probably
completely migrate to writeTo.
toString is great in case
you just want to quickly and easily convert something to a string, and
later, if formatting or more efficient output etc. is needed, the
method
can transparently be replaced by writeTo.
BTW, you do realize that code using writeTo is shorter in most cases?
The reason is, that it can omit all the calls to format().
Pretty much the only time when toString is simpler, is when it is a
single call to format().
It's only really the signature which is more complicated.
I am not convinced:
struct S{
int x,y,z;
void writeTo(void delegate(const(char)[]) sink, string format = null){
sink("(");
.writeTo(x,sink,"d"); // still no UFCS
sink(", ");
.writeTo(y,sink,"d");
sink(", ");
.writeTo(z,sink,"d");
sink(")");
}
string toString(){return "("~join(map!(to!string)([x,y,z]),", ")~")";}
}