Create mixins from a list of strings

Timon Gehr timon.gehr at gmx.ch
Sat Jan 11 12:52:14 PST 2014


On 01/11/2014 09:35 AM, "Casper Færgemand" <shorttail at hotmail.com>" wrote:
> On Saturday, 11 January 2014 at 07:50:51 UTC, Jakob Ovrum wrote:
>> Your problem is probably better solved without string mixins, but we'd
>> probably need to see some code or more elaboration to accurately
>> suggest a solution.
>
> enum semanticArray = ["test"];
>
> mixin(`T ` ~ semanticArray[0] ~ `(T)(T t) {
>      t.name ~= "` ~ semanticArray[0] ~ `";
>      return t;
> }`);
>
> This will mixin a single templated function named "test", which changes
> an AST node's name to whatever it was concatenated with "test". I want
> this to happen automatically for any length of semanticArray.

import std.string, std.algorithm;

enum semanticArray = ["derp", "lala"];

mixin(semanticArray.map!(a=>`T `~a~`(T)(T t) {
     t.name ~= "`~a~`";
     return t;
}`).join());



More information about the Digitalmars-d-learn mailing list