The state of string interpolation
Claude
no at no.no
Mon Dec 10 10:30:40 UTC 2018
On Thursday, 6 December 2018 at 00:32:48 UTC, Adam D. Ruppe wrote:
> On Thursday, 6 December 2018 at 00:20:53 UTC, H. S. Teoh wrote:
>> Why can't this be added to to code.dlang.org as a library /
>> dub package / whatever?
>
> Library things cannot access the local scope of the string
> unless you mixin.
>
> So
>
> mixin(interp!"foo #{a}");
>
> is doable as a library (and I know Nick Sabalusky's scriptlike
> has it, probably among others), but
>
> string b = "foo #{a}";
>
> is only doable as a language feature.
I have some syntax suggestion...
Interpolated string would fit well with string-mixins. I
sometimes tend to use the following pattern:
enum densityToBitmap(int x, int y, int z) =
q{
if (length(%d, %d, %d) <= 0)
index |= (1 << cornerIds[%d][%d][%d]);
}.format(x, y, z, x, y, z);
mixin(densityToBitmap!(0, 0, 0));
mixin(densityToBitmap!(0, 0, 1));
// etc ...
So I use the q{ ... } syntax when the string contains D code to
be "mixed-in" later. Using "format" is a bit awkward, so
interpolated strings would help to make the code more readable,
and we could still keep the braces-syntax.
For example, replacing the "q{ ... }.format(...)" by a "i{ ...
}.text"...
More information about the Digitalmars-d
mailing list