Multiline string literal improvements

Meta jared771 at gmail.com
Wed Oct 11 14:28:32 UTC 2017


On Wednesday, 11 October 2017 at 09:56:52 UTC, Igor wrote:
> On Wednesday, 11 October 2017 at 08:35:51 UTC, Walter Bright 
> wrote:
>> On 10/10/2017 3:16 PM, sarn wrote:
>>> Works even better in D because it can run at compile time.
>>
>> Yes, I see no need for a language feature what can be easily 
>> and far more flexibly done with a regular function - 
>> especially since what |q{ and -q{ do gives no clue from the 
>> syntax.
>
> You are right. My mind is just still not used to the power of D 
> templates so I didn't think of this. On the other hand that is 
> why D is still making me say "WOW!" on a regular basis :).
>
> Just to confirm I understand, for example the following would 
> give me compile time stripping of white space:
>
> template stripws(string l) {
>     enum stripws = l.replaceAll(regex("\s+", "g"), " ");
> }
>
> string variable = stripws(q{
>    whatever and    ever;
> });
>
> And I would get variable to be equal to " whatever and ever; ". 
> Right?

Even better, you could write the same code that you would for 
doing this at runtime and it'll Just Work:

string variable = q{
     whatever and  ever;
}.replaceAll(regex(`\s+`, "g"), " ");


More information about the Digitalmars-d mailing list