跳转到内容

D 编程/Mixin

来自维基教科书,开放的书籍,为开放的世界

Mixin 是将模板副本复制到指定位置的可能性。

template t(T){
  T get(){
    return mValue;
  }
}

这本身没有意义。但是如果你想将它插入一个类,该类有一个成员变量 mValue,这可能是有意义的。

class C{
  private int mValue;
  mixin t!(int);
}

您可以使用 Mixin 从片段中组装一个类。

让外部类知道 Mixin

[编辑 | 编辑源代码]

如果您需要一种方法让您的 Mixin 为外部类所知,您可以使用静态构造函数。

template t(T){
  static this(){
    sMixinCounter++;
  }
}

class C{
  private static int sMixinCounter;
  private int mValue;
  mixin t!(int);
}

如果您想使用多个这样的 Mixin,它们必须被命名,以避免链接器错误。

class C{
  private static int sMixinCounter;
  private int mValue;
  mixin t!(int) t1;
  mixin t!(int) t2;
}
华夏公益教科书