Improve this page Github へのログインが必要です。 簡単な修正は、ここから fork、オンライン編集、pull request ができます。 大きな修正については、 通常の clone で行って下さい。 Page wiki 関連するWikiページを参照・編集 English このページの英語版(原文)

ミックスイン

ミックスイン (テンプレート・ミックスイン とは別物です) は、文字列定数を通常の D のコードとしてコンパイルし、 プログラムへと挿入する機能です。 この機能をコンパイル時の文字列操作と組み合わせると、 ドメイン特化言語 (DSL) を作ることも可能になります。

例えば以下の例は、 指定された名前のメンバを持つ構造体を生成するテンプレートです:

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

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

以下のコードが生成されます:

struct Foo { int bar; }

Dのミックスインはテキストを操作して結果をコンパイルに使うわけですから、 表面的には、C のプリプロセッサと似た面もあります。 しかし、重大かつ根本的な違いが存在します。