D言語のコアデザインのひとつには、一貫性を保ちコーナーケースを避けることがありました。
このような状況のことを
turtles all the way down
といいます。
この一貫性の一例としてimport
が挙げられます。
Dでは単純なHello worldプログラムを書くのにもimport
が必要です。
import
文は与えられたモジュールにあるすべてのパブリックな関数や型を利用できるようにします。
import
文をソースファイルの一番上に書く必要はありません。
import
文は関数や、その他どんなスコープの中でもローカルに使用できます。
今後のチャプターではこれがD言語のほとんどすべての概念に適用されるのを見ることができるでしょう。
この言語はあなたにどんな制約も課しません。
Phobosと呼ばれる標準ライブラリはstd
パッケージに属しており、
import std.MODULE
でそのモジュールを参照できます。
import
文はモジュールの特定のシンボルを選択的にインポートすることもできます。
import std.stdio : writeln, writefln;
選択的インポートはシンボルがどこから来たのかを明確にすることで可読性を向上させたり、 異なるモジュールの同名のシンボルの衝突を避けたりするのに使うことができます。
Dのモジュールシステムは、他のシステムとは対照的に、完全にファイルに基づいています。
例えば、my.cat
は常にmy/
フォルダの中にあるcat.d
というファイルを参照します。
my
フォルダはカレントディレクトリか明示的に指定されたディレクトリインポート(-I
)のどれか1つに存在する必要があります。
最後に、簡単に大きなモジュールを複数の小さなファイルに分割するために、cat.d
の代わりに、cat/
フォルダも同様に使うことができます。
その場合Dコンパイラはmy/cat.d
の代わりにmy/cat/package.d
をロードしようとします。
package.d
ファイルには同じフォルダにある他の全てのモジュールをインポートするという規約
(ただし厳密なルールではありません)があります。