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