2012-09-14 12 views
10

Dart ma koncepcję stałych kompilacyjnych. Stała czasu kompilacji jest analizowana i tworzona w czasie kompilacji i kanonizowana.Dlaczego Dart ma stałe czasowe kompilacji?

Na przykład o to const konstruktor Point:

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

A oto jak go używać:

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

jest to nieoczywiste cecha, pozornie bez analogii do funkcji w innych językach dynamicznych. Istnieją restrykcje na obiektach const, tak jak wszystkie pola muszą być ostateczne i muszą mieć konstruktor const.

Dlaczego Dart ma czasy kompilacji?

Odpowiedz

10

Z listy mailingowej, Florian Loitsch pisze:

Obiekt kanonicznej stałych czasu kompilacji jest ładny, ale nie głównego powodu, aby je mieć. Rzeczywista korzyść ze stałych kompilacji jest taka, że ​​nie pozwalają one na dowolne wykonanie przy konstrukcji i dlatego mogą być używane w miejscach, w których nie chcemy wykonać kodu . Inicjatory zmiennych statycznych, na przykład, były początkowo ograniczone do stałych kompilacji, aby uniknąć wykonywania na poziomie najwyższym poziomu . Krótko mówiąc, upewniają się, że program zaczyna się od "main", a nie gdzie indziej.