2012-11-27 10 views

答えて

6

constは、コンパイル時定数を意味します。式の値は、コンパイル時にわかっている必要があります。 constは "値"を変更します。 news.dartlang.orgから

「constが」もう少しダートでの複雑かつ微妙だな意味を持っています。 const の値をに変更します。 const [1,2,3]のようなコレクションの作成時に を、また新しいオブジェクトの代わりに (const Point(2,3))のようなオブジェクトを作成するときに使用できます。ここで、constは、オブジェクトの全体が 深い状態をコンパイル時に完全に決定でき、 オブジェクトが固定され、完全に不変であることを意味します。あなたは

const x = 5を使用する場合はconstを使用して、ちょうどx = 5その後、

const aConstCollection = const [x];を使用しない場合は、変数xが

const aConstCollection = const [x]; 

ようcosntコレクションで使用することができます

違法です。

class SomeClass { 
    static final someConstant = 123; 
    static final aConstList = const [someConstant]; //NOT allowed 
} 

class SomeClass { 
    static const someConstant = 123; // OK 
    static final startTime = new DateTime.now(); // OK too 
    static const aConstList = const [someConstant]; // also OK 
} 
+0

www.dartlang.orgから

より多くの例は、なぜ私は静的なしのconstを使用することはできませんか?私のconstは静的なクラスのスコープを必要としません。なぜ私は静的なものとして宣言する必要がありますか? – robbie

+0

@robbieあなたの定数もインスタンスごとに繰り返す必要はありません。それは一定であるので、それは決して変わらないでしょう、なぜそれを複製する無駄なスペース?定数の静的宣言を強制することにより、インスタンスが作成されるたびにではなく、クラスのために一度だけメモリに格納されます。この説明はC#とDartの両方に当てはまると思います。 –

+1

DartのConst値は「標準化」されているため、インスタンスは1つしか存在せず、したがって「静的const」は冗長です。「const」で十分です。実際のところ、[Seth Laddのこの記事の](http://news.dartlang.org/2012/06/const-static-final-oh-my.html)の最後の段落は、「const」が好ましいスタイルであり、静的なconstは落胆した。 – dharcourt

関連する問題