Menu

Строковые mixin'ы

Выражение mixin принимает заданную строку, компилирует её и генерирует соответствующие инструкции. Это механизм, работающий исключительно во время компиляции, и, соответственно, работает только со строками, доступными во время компиляции. Сравнение со зловещим eval из JavaScript здесь неуместно.

mixin("int b = 5");
assert(b == 5); // компилируется вполне
                // обычно

mixin так же работает со строками, собранными динамически, естественно, если они не зависят от значений, доступных только во время исполнения.

mixin совместно с CTFE из следующего раздела позволяют писать впечатляющие библиотеки, наподобие Pegged, генерирующей парсер грамматики, определённой в виде строки в исходном коде.

Подробнее

rdmd playground.d