2012-09-14 33 views
10

Dart具有編譯時常量的概念。編譯時常量在編譯時被解析和創建,並被規範化。爲什麼Dart有編譯時間常量?

例如,這裏是點一個const構造:

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對象有限制,如所有字段必須是最終的,它必須有一個const構造函數。

爲什麼Dart有編譯時常量?

回答

10

從郵件列表,弗洛裏安Loitsch寫道:

編譯時間常數的標準化特性是好的,但不 主的原因有他們。編譯時間 常量的真正好處是,它們不允許在 構造上執行任意執行,因此可用於我們不希望執行代碼的地方。例如,靜態變量初始值設定項最初被限制爲編譯時常量以避免在頂層執行 。簡而言之,他們確保程序以 '主'開始,而不是其他地方。

相關問題