On Tuesday, 18 September 2012 at 16:13:49 UTC, Andrej Mitrovic
wrote:
On 9/18/12, Andre <[email protected]> wrote:
snip

Templates introduce a new scope and in that scope 'var' doesn't exist,
what you want are template mixins (note: mixin expressions and
template mixins are different things):

mixin template test2(string str){
        void test2(){
                mixin("writeln(" ~ str ~ ");");
        }
}

void main() {
mixin test2!"var";
}

Note that you don't have to pass the variable by a string, you can use
an 'alias' and get rid of that mixin altogether:

mixin template test2(alias symb)
{
    void test2()
    {
        writeln(symb);
    }
}

void main()
{
    string var = "Hello World!";
    mixin test2!var;
}

What I want to do is to have my own sub language entered as
string. The string contains a command, expressions and also
variables of the actual scope, which will be read or written to.
Therefore I need string mixins. I just wonder wheter there is a
possibility not to write at every place
"mixin(interpret("..."));" but a nice statement like
interpret!("...");

Kind regards
Andre

Reply via email to