0

コンパイル時に日付スタンプに自動的に設定される文字列定数を取得するにはどうすればよいですか?

何かのようなもの:

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

s は、たとえば「このプログラムは 1971-02-03 04:05:06 にコンパイルされました」

4

3 に答える 3

1

質問ありがとう!

Dart には必要なコンパイル手順はありません。(オプションの Dart-to-JavaScript コンパイラ、またはツリー シェーキングを行う Dart-to-Dart プロセッサさえあります。) Dart の VM は入力をテキスト ファイルとして受け入れます。Ruby や Python と同様に、テキストベースのスクリプトを実行します。

他の人が述べたように、これはある種のビルドステップの仕事です。

于 2013-04-10T02:19:44.350 に答える
0

私は Dart を初めて使用しますが、そのようなことが可能であることを示唆するドキュメントは見たことがありません。私はそうではないことを強く疑っています。

あなたが説明したような機能が本当に必要な場合は、独自のビルド スクリプトを作成することをお勧めします。次のような簡単なもの:

#!/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";
于 2013-04-09T05:28:25.893 に答える
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 ?
            }
   );

このトリックは、コンパイラがファイルの「最終変更日」を変更するという知識に基づいています

于 2013-04-09T11:58:17.840 に答える