2013-04-08 62 views
0

我怎樣才能得到一個字符串常量自動設置爲在編譯時間郵戳?DART字符串常量設置爲時間戳在編譯

是這樣的:

const String COMPILE_DATESTAMP = eval_static(DateTime.now().toString()); 
    ... 
    String s = "This program was compiled $COMPILE_DATESTAMP"; 

其中s隨後將被用於例如「這個程序被編譯1971-02-03 04:05:06」

+0

任何理由downvote? – 2013-04-09 08:17:20

回答

1

感謝您的問題!

有在DART無需編譯步驟。 (我們有一個可選的Dart-to-JavaScript編譯器,或者一個Dart-to-Dart處理器,可以實現樹震動。)Dart的VM接受輸入爲文本文件。與Ruby或Python類似,它運行基於文本的腳本。

正如其他人所說,這是某種形式的構建步驟的工作。

0

我是新來的飛鏢,但我沒有看到文件中的任何東西,以表明這樣的事情是可能的。我強烈懷疑它不是。

如果你確實需要的功能像你描述的,我認爲最好的辦法是推出自己的構建腳本。一些簡單的像:

#!/bin/bash 

sed -ri "s/INSERT_DATETIME_HERE/`date`/" $1 
dart2js $1 -o$1.js 

可以修改,以滿足您的需求。 (我想要一些健全檢查在那裏如果是我,我只是建議的一個起點。)您的代碼將變爲:

const String COMPILE_DATESTAMP = "INSERT_DATETIME_HERE"; 
... 
String s = "This program was compiled $COMPILE_DATESTAMP"; 
+0

不錯......但特定於平臺,並向構建添加手動過程。這個想法對於軟件版本的用戶來說是100%可靠的指示。 – 2013-04-09 08:20:04

+0

當然,shell腳本僅限於UNIXy環境。我的觀點是,Dart沒有像你的'eval_static'這樣的東西,但是用你喜歡的任何語言來編寫一個構建腳本來完成你想要的東西是微不足道的。它是自動的,不是手動的;你只需要一步,就像直接使用'dart2js'一樣。如果問題在於您正在使用IDE,那麼如果在構建過程中無法將IDE配置爲使用您的腳本,則會感到驚訝。無論您的構建過程如何,我只是建議您將其編寫爲您想要的內容。 – 2013-04-09 18:54:22

0

您必須編寫另一個程序可以檢查實際編譯的程序。然後就是這麼簡單:

File compiledApp = new File('path/to/compiled/app.dart'); 
compiledApp.lastModified().then(
    (modifiedDate) 
    { 
     print("This program was compiled $modifiedDate"); 
    }, 
    onError: (exp) 
      { 
       // File doesn't exist ? 
      } 
    ); 

這一招建立在知識的編譯器將修改「最後修改日期」的文件