D 1.0   D 2.0
About Japanese Translation

Last update Mon Feb 5 00:03:54 2007

ミックスイン

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

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

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

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

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

struct Foo { int bar; }

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