2017-11-26 33 views
8

にアクセスするコンパイル時に現在の日付のように外部情報にアクセスできるかどうか疑問に思っていました。コンパイル時にコンパイル時にHaxe

このような何かをすることは可能であろう:

class MyInfo { 
    private var buildDate:Int = --- AUTOMATICALLY INSERT THE CURRENT UNIX DATE TIME HERE ---; 

    public function getInfo():String { // example usage 
     return "This library was compiled the " + buildDate; 
    } 
} 

私は、ファイルを作成/編集バット/ SHでこの情報にアクセスすることについて考え、その後、あまりにも、コンパイラに渡します。 (「-D」に似た何か。)しかし、haXeのコンパイラは次のように引数をサポートしていないようです:私はその後、変数の日付のコンテンツを使用することができるように

haxe --main MyInfo --js test.js -SOMEARG date=$(date) 

...

答えて

10

このマクロ(コンパイル時に実行されるコード)で行うことができます。

あなたの日付の例は、料理の書籍hereに記載されています。 またはcookbookのマクロについて詳しくはこちらをご覧ください。

編集: 最小例:

class Test { 
    public static function main() { 
    trace(getBuildTime()); 
    } 

    public static macro function getBuildTime() { 
    var buildTime = Math.floor(Date.now().getTime()/1000); 

    return macro $v{buildTime}; 
    } 
} 

時間は、コンパイル時に計算されます。