Interpolated strings
Stefan Koch via Digitalmars-d
digitalmars-d at puremagic.com
Wed Apr 19 07:02:43 PDT 2017
On Wednesday, 19 April 2017 at 12:10:33 UTC, Jonas Drewsen wrote:
> On Wednesday, 19 April 2017 at 12:03:47 UTC, Stefan Koch wrote:
>> On Wednesday, 19 April 2017 at 11:59:51 UTC, Jonas Drewsen
>> wrote:
>>
>>> What about supporting an optional prefix inside the {} like:
>>>
>>> int year = 2017;
>>> format($"The date is {%04d year}");
>>>
>>> so if there is a % immediately following the { then the chars
>>> until next whitespace is format specifier. You can of course
>>> leave out the format specifier and it will default to %s.
>> I really don't see how string interpolation is better then
>> ` "The date is " ~ format("%04d", year)); `
>
> As mentioned before it is only because it is such a common
> pattern that it justifies the change. Seems like many other
> languages reached that conclusion as well.
> Also take a look at a more realistic example with some more
> formatting and it will be more obvious (at least to me it is :)
> )
>
> "The date is " ~ format("%04d", year)) ~ " and " ~ user ~ "
> just logged into " ~ here;
>
> $"The date is {%04d year} and {user} just logged into {here}"
I see.
So you want to build format strings as well.
This is going to be nasty, and likely to complex for a robust
implementation.
Here is what I would support:
String interpolation literals can only be used with strings.
And they need to start with some prefix which is not an operator.
I"The date is %dateString and the time is %timeString"
More information about the Digitalmars-d
mailing list