4

Python ソース ファイルには、パターンを使用してモジュールとしてもスタンドアロン プログラム (ツール) としても機能するという優れた特性があります。

if __name__ == "__main__":

Dモジュールのソースファイルで同じ動作をすることは何とか可能ですか?

4

3 に答える 3

5

それはあなたがしようとしていることに依存します。AD プログラムはmain、エントリ ポイントとしてすべてのモジュールで 1 つの関数のみを必要とするため、Python のような暗黙的な方法はありません。D の方法は、実行可能ファイルを別のモジュールとして作成し、別のモジュールをmainインポートします。

ただし、テスト目的でのみ実行したい場合は、実行可能コードをunittestブロックに配置して ( なしでmain)、 を使用してファイルを実行できます。rdmd -main -unittest scratch.dこれにより、スタブが追加さmainれます。

二重目的のモジュール (実際には D ウェイではありません) を本当に作成したい場合はmain、一意のversionブロック内に配置できます。

module scratch; // file scratch.d
import std.stdio;

void foo(){ writeln("FOO"); }

version(scratchExe) {
    void main() {
        foo();
    }
}

次に、実行可能バージョンをコンパイルしますdmd scratch.d -version=scratchExe

于 2013-08-30T21:46:54.920 に答える
4

はい、プラグマで:

void foo(){
//...
}

version(fooMain){
pragma(startaddress, foo);
}
于 2013-08-31T03:26:58.877 に答える