などの機能を使用できるようにしたいのですが、ファイルの先頭writefln()
に追加する必要はありません。import std.stdio
それを説明する別の方法は、C++ で行う方法です。入力できるstd::cout << "Test";
ので、追加する必要がなくなりusing namespace std;
ます。私は同じことをしたいのですが、D.
などの機能を使用できるようにしたいのですが、ファイルの先頭writefln()
に追加する必要はありません。import std.stdio
それを説明する別の方法は、C++ で行う方法です。入力できるstd::cout << "Test";
ので、追加する必要がなくなりusing namespace std;
ます。私は同じことをしたいのですが、D.
これが古い質問であることはわかっていますが、正しい答えが表示されないため、とにかく答えています。
静的インポート
基本的なインポートは、モジュールとインポートが比較的少ないプログラムでうまく機能します。インポートが多数ある場合、インポートされたさまざまなモジュールの名前間で名前の衝突が発生し始める可能性があります。これを止める 1 つの方法は、静的インポートを使用することです。静的インポートでは、モジュールの名前を参照するために完全修飾名を使用する必要があります。
static import std.stdio; void main() { writefln("hello!"); // error, writefln is undefined std.stdio.writefln("hello!"); // ok, writefln is fully qualified }
上で述べたように、D モジュールは C++ 名前空間以上のものです。D も MODULAR 言語です。D のモジュールには、コンストラクター/デストラクターがあります。さらに、Dにはパッケージがあります。D のモジュールとパッケージの詳細については、http: //www.digitalmars.com/d/2.0/module.html を参照してください。
そのページの内容の最も興味深い部分は次のとおりです。
モジュールは、ソース ファイルと 1 対 1 で対応します。モジュール名は、パスと拡張子を取り除いたファイル名です。
モジュールは、そのコンテンツの名前空間スコープを自動的に提供します。モジュールは表面的にはクラスに似ていますが、次の点で異なります。
- 各モジュールのインスタンスは 1 つだけで、静的に割り当てられます。
- 仮想テーブルはありません。
- モジュールは継承せず、スーパーモジュールなどもありません。
- ファイルごとに 1 つのモジュールのみ。
- モジュール シンボルをインポートできます。
- モジュールは常にグローバル スコープでコンパイルされ、周囲の属性やその他の修飾子の影響を受けません。
モジュールは、パッケージと呼ばれる階層にグループ化できます。
モジュールはいくつかの保証を提供します: - モジュールがインポートされる順序はセマンティクスに影響しません。- モジュールのセマンティクスは、それをインポートするものによって影響を受けません。- モジュール C がモジュール A と B をインポートする場合、B を変更しても、A に依存する C のコードが黙って変更されることはありません。
インポート部分を使用する必要があります。ただし、その前に完全なモジュールパスを指定して、メソッド/関数などに対処することは可能です。たとえば、std.stdioをインポートする(そしてPhobosを使用する)場合、std.stdio.writefln( "...")は有効です。これは、「writefln」と呼ばれる関数が複数ある場合に役立ちます。
私はあなたがそれを行うことができるとは思わない. Dのステートメントは、C++のステートメントimport
よりも多くのことを行います。また、プリプロセッサ ディレクティブusing namespace
も置き換えます。#include
個別の関数/クラスをインポートできます(構文については不明です):
import std.stdio: writef, writefln;