String Mixins

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

mixing 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.

Pour aller plus loin

rdmd playground.d