L'expression mixin
(NdT: "mélanger dans") compile une chaîne de caractères contenant du code D et génère les instructions correspondantes. C'est purement une mécanique de compilation et ça ne peut fonctionner que quand les chaînes de caractères sont disponibles à la compilation. Il ne faut pas confondre cette expression avec l'instruction javascript démoniaque eval
.
mixin("int b = 5");
assert(b == 5"); // fonctionne parfaitement
Le mélangeage fonctionne aussi avec des chaînes construites dynamiquement tant qu'elles ne dépendent pas de valeurs connues uniquement à l'exécution.
mixin
associé avec la CTFE, que nous verrons dans le prochain chapitre, permet d'écrire des librairies impressionantes, comme Pegged qui génère un parser à partir d'une grammaire sous forme de chaîne de caractères dans le code source.