template mixins for boilerplate

Philippe Sigaud via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jun 21 09:01:39 PDT 2014


On Sat, Jun 21, 2014 at 4:24 PM, Dicebot via Digitalmars-d-learn
<digitalmars-d-learn at puremagic.com> wrote:
> On Saturday, 21 June 2014 at 13:45:14 UTC, Philippe Sigaud via
> Digitalmars-d-learn wrote:
>>
>> Out of curiosity, why use a mixin template containing a string mixin
>> instead of, well, directly injecting a string mixin in your struct,
>> with a function?
>
>
> Hiding non-hygienic implementation behind a more reliable interface.

In what way is a template more reliable than the equivalent function?
That's an honest question: I'm just looking at the code a few posts
upward:

mixin template Function(string name) {
    mixin("public static int " ~ name ~ "() { return other.module." ~
name ~"; }");
}

struct S {
      mixin Function!"fctn1";
}

And this double-mixin construction seems needlessly complicated to me,
compared to:

string Function(string name) {
      return "public static int " ~ name ~ "() { return other.module."
~ name ~"; }";
}

struct S {
    mixin(Function("fctn1"));
}


More information about the Digitalmars-d-learn mailing list