When D is not nice

superdan super at dan.org
Sun Jul 6 16:12:27 PDT 2008


downs Wrote:

> superdan wrote:
> > Ary Borenszweig Wrote:
> > 
> >> Frank Benoit a écrit :
> >>> String concatenation in Java:
> >>>
> >>> "abc " + a + " bla";
> >>>
> >>> where a is an interface ref.
> >>>
> >>> Ported to D, this look like this:
> >>>
> >>> "abc " ~ (cast(Object)a).toString ~ " bla";
> >>>
> >>> This are 3 steps more:
> >>> 1.) explicit cast to Object (interface/class compatibility!)
> >>> 2.) explicit call to toString
> >>> 3.) put additional parentheses
> >>>
> >>> I would be happy if we could remove all three of this annoying points.
> >> Exactly the same thought here. Also:
> >>
> >> int i = ...;
> >> char[] x = "You pressed button " + i;
> >>
> >> Oops... doesn't compile. To fix it:
> >>
> >> import std.string;
> >>
> >> int i = ...;
> >> char[] x = "You pressed button " + toString(i);
> >>
> >> But wait, if that piece of code is inside a method of a class, than 
> >> (WHY?) it thinks it's the toString() method, so you end up writing:
> >>
> >> import std.string;
> >>
> >> int i = ...;
> >> char[] x = "You pressed button " + std.string.toString(i);
> >>
> >> Those are the cases I find D not nice.
> > 
> > yarp i concur. phobos oughtta have a function asStr that converts everything to string and concats. then you write:
> > 
> > auto x = asStr("You pressed button ", i, " with your pinky toe");
> > 
> 
> This is also known as std.string.format.

narp that interprets %s and shit which can quickly become dangerous. you'd have to say

auto x = format("", ........);

i also agree with ary that infix could help a ton. but then it would confuse noobs. can't please everyone. life's a bitch.



More information about the Digitalmars-d mailing list