インポートとモジュール

D言語のコアデザインのひとつには、一貫性を保ちコーナーケースを避けることがありました。 このような状況のことを turtles all the way down といいます。 この一貫性の一例としてimportが挙げられます。

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ファイルには同じフォルダにある他の全てのモジュールをインポートするという規約 (ただし厳密なルールではありません)があります。

rdmd playground.d