Uma das principais decisões de design do D foi ser consistente e evitar casos isolados
na linguagem.
Isto é conhecido como turtles all the way down. [tradução livre: Tartarugas até lá embaixo.]
Um bom exemplo dessa consistência são os import
s.
Para um simples programa Olá Mundo em D, são necessários import
s.
A instrução import
torna disponíveis todas as funções públicas
e tipos públicos do módulo fornecido.
Uma instrução import
não precisa aparecer na parte superior de um arquivo de código-fonte.
Ela também pode ser usada localmente em funções ou em qualquer outro escopo.
Nos próximos capítulos, você verá que isso se aplica a quase todos os conceitos em D. A linguagem não impõe restrições arbitrárias a você.
A biblioteca pad~rao, chamado Phobos,
está localizado no pacote std
e seus módulos são referenciados por meio do import std.MODULE
.
A instrução import
também pode ser usada para importar seletivamente
determinados símbolos de um módulo:
import std.stdio : writeln, writefln;
As importações seletivas podem ser usadas para melhorar a legibilidade, tornando óbvia a origem de um símbolo e também como uma forma de evitar o conflito de símbolos com o mesmo nome de módulos diferentes.
O sistema de módulos do D, em contraste com outros sistemas, é totalmente baseado em arquivos.
Por exemplo, import my.cat
sempre se refere a um arquivo cat.d
na pasta my/
.
A pasta my
precisa estar no diretório de trabalho atual ou
em uma das importações de diretório especificadas explicitamente (-I
).
Por fim, para facilitar a divisão de módulos grandes em vários arquivos menores,
em vez de cat.d
, uma pasta cat/
também poderia ser usada.
O compilador D tentaria então carregar my/cat/package.d
em vez de my/cat.d
.
A convenção (mas não uma regra rígida) para arquivos package.d
é importar publicamente
todos os outros módulos na mesma pasta.