英語版
このページの英語版を見る

文字列ミックスイン

文字列ミックスイン("テンプレートミックスイン"と混同しないこと)は、 文字列定数を通常のDコードとしてコンパイルし、 プログラムに挿入することを可能にする。 文字列のコンパイル時の操作と組み合わせることで、 ドメイン固有言語の作成が可能になる。

例えば、以下では、 名前付きのメンバを持つ構造体を生成するテンプレートを作成できる。

template GenStruct(string Name, string M1)
{
    const char[] GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
}

mixin(GenStruct!("Foo", "bar"));

以下のような構造体を生成する。

struct Foo { int bar; }

表面的には、Dミックスインはテキストを操作し、結果をコンパイルできるため、 Cプリプロセッサと類似した特性がある。 しかし、根本的な大きな違いがある。