Variable references in strings (Was: Structs implementing interfaces

Ary Borenszweig ary at esperanto.org.ar
Tue Feb 10 18:08:40 PST 2009


Don escribió:
> Ary Borenszweig wrote:
>> bearophile wrote:
>>> Ary Borenszweig:
>>>> res ~= res ~= "\n\treturn 
>>>> cast(${iface})cast(void*)&_iface_${iface}_vtbl;";
>>>
>>> Have you tried std.metastrings.Format!()? I use it quite often.
>>
>> template Format(A...)
>>     Formats constants into a string at compile time. Analogous to 
>> std.string.format().
>>
>>     Parameters:
>>     A = tuple of *constants*, which can be strings, characters, or 
>> integral values.
>>
>> I want it in runtime. I basically want this:
>>
>> foo = `Hello ${var}!`;
>>
>> or
>>
>> foo = `Hello $var!`;
>>
>> to be the same as:
>>
>> foo = `Hello ` ~ var ~ `!`;
>>
>> You can see in this trivial example how readability is improved (and 
>> you type less), and in a bigger example (like the one in this thread) 
>> it should be better.
> 
> More than a year ago, I created a CTFE function dollar() to do that. 
> It's a very simple. No language support is required.
> 
> foo = mixin(dollar("Hello $var!"));
> 
> We just need a way to get rid of the "mixin(" bit.

That's cool!

Yeah, the mixin(dollar( )) stuff is too long... But it's nice that this 
can be done at compile time. :-)



More information about the Digitalmars-d mailing list