Programmation D/Éléments avancés du langage

Autres mots-clés du langage D.
Le langage D propose également des petits mots clés qui font sa richesse.
auto.
Ce mot clé permet de déterminer automatiquement le type d'une variable. Par exemple :
auto file = new File("pathToTxt");
La variable file sera de type File.
assert.
Ce mot clé permet d'effectuer des tests et si un échec se produit, il lève une exception (par exemple, on souhaite ici vérifier que maFonction() retourne 1).
assert(maFonction() == 1);
debug.
Vous avez la possibilité de mettre des portions de code dans des blocks debug.
Utilisation :
debug(niveauDebug){
debug(debugIdentifiant){
Cas d'utilisation : ceci permet aux équipes de développement de travailler sur une version orientée développeur, où l'on pourra afficher de nombreux message d'information ainsi que des tests.
Ces portions de code seront compilées si et seulement si l'option -d-debug <niveauDebug/debugIdentifiant> est précisée.
ldc *.d -d-debug 3
ou encore
ldc *.d -d-debug graphicEngineTeam
Ainsi, on activera les portions de debug des blocks de niveau 3 ou dans l'autre cas, ceux dont l'identifiant est "graphicEngineTeam".
unittest.
Comme vous le voyez, le langage D n'en finit pas d'intégrer de superbes fonctionnalités nativement ! Un test unitaire permet de vérifier le comportement de votre code. Par exemple, vous avez une classe magicien avec des méthodes comme :
À la suite de la définition de la classe, on écrit un exemple d'utilisation, permettant de garantir son fonctionnement.
class Magicien : Humain
 private:
 public:
 this(){
 ~this(){
 lancerBouleDeFeu(){
 marcher(){
 couvrir(){
 soin(){
unittest
 Magicien gandalf = new Magicien();
 gandalf.lancerBouleDeFeu();
 gandalf.marcher();
 gandalf.marcher();
 gandalf.couvrir();
 gandalf.soin();
Les tests unitaires sont compilés si l'option codice_1 est utilisé au moment de la compilation
ldc Magicien.d -unittest
version.
Ce mot-clé permet de proposer différentes versions de votre logiciel (par exemple, une version familiale, une version professionnelle, une version « Black », etc. Et bien au lieu d'avoir trois programmes différents, vous pouvez mettre le code spécifique à chaque version dans le block version correspondant, par exemple :
import tango.io.Stdout;
uint FAMILIALE = 0;
uint PROFESSIONNELLE= 1;
uint BLACK = 2;
void main()
 Stdout("Bonjour").nl;
 version(FAMILIALE)
 Stdout("Bienvenue dans la version familiale").nl;
 version(PROFESSIONNELLE)
 Stdout("Bienvenue dans la version professionnelle").nl;
 version(BLACK){
 Stdout("Bienvenue dans la version black edition").nl; 
Admettons que vous avez enregistré ce code dans le fichier version.d. Pour tester les cas :
1/ Sans spécifier la version :
ldc version.d
./version
2/ Avec la version FAMILIALE :
ldc -d-version FAMILIALE version.d
./version
3/ Avec la version PROFESSIONNELLE :
ldc -d-version PROFESSIONNELLE version.d
./version
4/ Avec la version BLACK :
ldc -d-version BLACK version.d
./version
5/ Utiliser 2 versions :
ldc -d-version PROFESSIONNELLE -d-version BLACK version.d
./version
Il existe des versions automatiquement détectées et par conséquent réservées, comme :
pragma.
pragma(msg, "Bonjour");