2012-09-14 6 views
10

Dartにはコンパイル時定数の概念があります。コンパイル時にコンパイル時定数が解析され、作成され、正規化されます。例えば、ここではポイントのconstコンストラクタDartがコンパイル時定数を持つのはなぜですか?

されています:

class Point { 
    final num x, y; 
    const Point(this.x, this.y); 
} 

そして、ここでは、あなたがそれを使用する方法は次のとおりです。

main() { 
    var p1 = const Point(0, 0); 
    var p2 = const Point(0, 0); 
    print(p1 == p2); // true 
    print(p1 === p2); // true 
} 

これは機能に一見なしの類似で、非自明な機能です他の動的言語でconstオブジェクトには制限があります。すべてのフィールドはfinalでなければならず、constコンストラクターが必要です。

なぜDartはコンパイル時定数を持っていますか?

答えて

10

メーリングリストから、フロリアンLoitschは書いている:

コンパイル時定数の正規化プロパティがそれらを持っている主な理由-素敵ですが、 ありません。コンパイル時の実際の利点 定数は、 構成で任意の実行を許可しないため、 コードを実行したくない場所で使用することができます。たとえば、静的変数イニシャライザは、最初に でコンパイル時定数に制限され、 のトップレベルでの実行を回避していました。要するに、彼らはプログラムが 'main'で始まり、他のどこかではないことを確認します。

関連する問題