2017-11-26 16 views
8

Tôi đã tự hỏi liệu có thể truy cập thông tin bên ngoài - như ngày hiện tại trong quá trình biên dịch hay không.Truy cập ngày biên dịch trong khi biên dịch trong Haxe

Nó sau đó sẽ có thể làm điều gì đó như thế này:

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; 
    } 
} 

Tôi nghĩ về việc tiếp cận thông tin này trong biên soạn dơi/sh/làm cho tập tin và sau đó vượt qua nó để trình biên dịch, quá. (Một cái gì đó tương tự như "-D".) Tuy nhiên trình biên dịch haXe dường như không ủng hộ một cuộc tranh cãi như:

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

Vì vậy mà tôi có thể sử dụng nội dung từ ngày biến sau đó ...

Trả lời

10

này có thể được thực hiện với các macro (thực thi mã tại thời gian biên dịch).

Ví dụ về ngày của bạn được đề cập trong sách dạy nấu ăn, here. Bạn có thể tìm thêm thông tin về macro hoặc trong cookbook.

Edit: Minimal dụ:

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}; 
    } 
} 

Thời gian sẽ được tính tại thời gian biên dịch.

Các vấn đề liên quan