Variable references in strings (Was: Structs implementing interfaces
Daniel Keep
daniel.keep.lists at gmail.com
Tue Feb 10 19:11:55 PST 2009
Ary Borenszweig wrote:
> 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. :-)
<joking>
#define F(args...) mixin(dollar(args))
</joking>
-- Daniel
More information about the Digitalmars-d
mailing list