Imports et modules

L'une des décisions de conception fondamentale dans la langue D consiste à être cohérent et à éviter les cas critiques. Ceci s'appelle l'argument de la régression, un concept illustré par l'expression hindouïté "turtles all the way down".

Imports

Pour une simple application "Hello World" en D, il faut q'une déclaration import soit placée. La déclaration import permet de rendre publiques les fonctions et les types définies dans un module.

Régression à l'infini

Il n'est pas nécessaire qu'une déclaration import soit placée tout en haut du fichier source. Celle-ci peut également être utilisée localement à l'intérieur des fonctions ou sous tout autres portées. Vous allez voir dans les prochains chapitres que ceci s'applique à presque tous les concepts présents dans D. Le language n'expose aucune contrainte arbitraire sur vous.

Imports selectifs

La librairie standard Phobos, est située dans le package std et ses modules peuvent être utilisés grâce à l'instruction import std.MODULE

L'instruction import peut être utilisée pour importer uniquement certains symboles d'un module:

import std.stdio : writeln, writefln;

Ces imports séléctifs peuvent permettre de rendre un programme plus clair en explicitant la provenance de chaque symbole, et c'est également un moyen d'éviter les conflits entre différents symboles qui ont le même nom dans différents modules.

Les imports correspondent aux répertoires et aux fichiers

Le système de module présent sur D - en contraste aux autres systèmes - est entièrement basé sur les fichiers. Par exemple, mon.chat fait toujours référence à un fichier chat.d dans le dossier mon/. Le dossier mon/ doit être dans le répertoire de travail courant ou dans un des répertoires définis explicitement par -I. Finalement, afin de faciliter la séparation de grands modules en plusieurs petits fichiers, plutôt que d'utiliser chat.d, un dossier chat/ pourrait être utilisé également. Le compilateur D essaiera alors de charger mon/chat/package.d plutôt que mon/chat.d.

La convention (non stricte) pour les fichiers package.d est d'importer publiquement tous les autres modules du même dossier.

rdmd playground.d