跳轉到內容

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;
}
華夏公益教科書