Sobes.tech
Middle

Mit engednek meg a konstans konstruktorok Dartban?

sobes.tech MI

Válasz az MI-től

A Dartban a konstans konstruktorok lehetővé teszik olyan objektumok létrehozását, amelyek fordítási időben állandóak. Ez azt jelenti, hogy az objektum értéke a fordítás során ismert, nem csak futás közben.

A konstans konstruktorok használatának előnyei:

  • Teljesítmény: A konstans konstruktorral létrehozott objektumokat a fordító cache-eli. Ha több azonos konstans objektumot hozunk létre, azok valójában ugyanarra a példányra hivatkoznak a memóriában, ez csökkenti az új objektumok létrehozásának költségét és a memóriahasználatot.
  • Hatékonyság: Lehetővé teszi a kód optimalizálását fordítás közben.
  • Használat konstans kifejezésekben: A konstans konstruktorral létrehozott objektumokat más konstans kifejezésekben is felhasználhatjuk, például const deklarációkban.

A konstans konstruktor használatának feltételei:

  • Minden oszlopnak finalnak kell lennie.
  • A konstruktor törzse üres vagy csak a szülő konstruktorának hívását (super()) tartalmazhatja.
  • A konstruktor const kulcsszóval kell legyen ellátva.

Példa:

class Point {
  final double x;
  final double y;

  // Konstans konstruktor
  const Point(this.x, this.y);
}

void main() {
  // Konstans objektumok létrehozása
  const Point p1 = Point(0.0, 0.0);
  const Point p2 = Point(0.0, 0.0);

  // p1 és p2 ugyanarra az objektumra hivatkozik a memóriában
  print(p1 == p2); // Igaz értéket fog kiírni
}