OR, better yet:

mixin MyMixin
{
    foreach(i; 0..10)
        MyMixin ~= "writeln(" ~ to!string(i); ~ ");\n"'
}

And this could be printed out as a pragma(msg, ...) or into a .log file or anywhere else. This way it's easy to see what did end up being mixed in.


On Thu, Nov 1, 2012 at 7:55 PM, Gor Gyolchanyan <gor.f.gyolchanyan@gmail.com> wrote:
I find myself doing this very very often and it pains me to write ugly code like this over and over again:

mixin(()=>{

    string result;
    foreach(i; 0..10)
        result ~= "writeln(" ~ to!string(i); ~ ");\n"'
    return result;

}());

All it does is generates a string in a delegate, which is immediately called and passed to a mixin.
Almost all mixins contain generated strings and most if them need a dedicated string generator.
I don't want to propose new syntax, because we all know that new syntax is the last thing that will be developed, considering the number of bugs out there. The first thing I wanted to do was this:

mixin
{
    foreach(i; 0..10)
        mixin ~= "writeln(" ~ to!string(i); ~ ");\n"'
}

I'm not suggesting this to be implemented, this is just what I automatically wanted to write.
Anybody else had this kind of thoughts?

--
Bye,
Gor Gyolchanyan.



--
Bye,
Gor Gyolchanyan.