У Дарта есть понятие констант времени компиляции. Константа времени компиляции анализируется и создается во время компиляции и канонизируется.
Например, вот конструктор const
для Point:
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.
Почему у Дарта есть константы времени компиляции?