2012-09-14 19 views
10

Dart tiene el concepto de constantes de tiempo de compilación. Una constante de tiempo de compilación se analiza y se crea en tiempo de compilación, y se canonicaliza.¿Por qué Dart tiene constantes de tiempo de compilación?

Por ejemplo, aquí es un constructor const de Punto:

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

Y aquí es cómo lo usa:

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

Esta es una característica no obvia, aparentemente sin paralelos con características en otros lenguajes dinámicos. Existen restricciones en los objetos const, como todos los campos deben ser finales y debe tener un constructor const.

¿Por qué Dart tiene constantes de tiempo de compilación?

Respuesta

10

A partir de la lista de correo, Florian Loitsch escribe:

La propiedad canónicos de las constantes de tiempo de compilación es agradable, pero no la principal razón para tenerlos. El beneficio real de las constantes en tiempo de compilación es que no permiten la ejecución arbitraria en la construcción y, por lo tanto, se pueden utilizar en lugares donde no se desea ejecutar el código . Los inicializadores de variables estáticas, por ejemplo, fueron inicialmente restringidos a constantes de tiempo de compilación para evitar la ejecución en el nivel superior . En resumen, se aseguran de que un programa comience con 'main' y no en otro lugar.

Cuestiones relacionadas