Interpolated strings

Meta via Digitalmars-d digitalmars-d at puremagic.com
Wed Apr 19 10:57:07 PDT 2017


On Wednesday, 19 April 2017 at 15:07:55 UTC, Jonas Drewsen wrote:
> I'm talking about building format strings just yet... I'm just 
> working with the suggestion that Walter brought up with 
> converting the interpolated string into something that can be 
> fed into format e.g.:
>
> $"The date is {%04d year} and {user} just logged into {here}"
>
> is rewritten by the compiler to:
>
> "The date is %04d and %s just logged into %s", year, user, here
>
> which can be fed into for example format(). Not sure I like the 
> need to call format to get the resulting string, but just 
> working with the idea here.
>
> I also think it would loose a lot of value to only allow 
> strings as you suggest (e.g. %dateString).

If we had language-level tuple literals you could desugar the 
expression into:

("The date is %04d and %s just logged into %s", year, user, here)

And let a user do whatever they want with it.

Even now it can be done with an AliasSeq, but not with the 
automatic insertion of format arguments, of course.

alias fs = AliasSeq!("The date is %04d and %s just logged into 
%s", 1992, "Alan", "10.1.0.123");

writeln(format(fs)); //Prints "The date is 1992 and Alan just 
logged into 10.1.0.123"




More information about the Digitalmars-d mailing list