Sobes.tech
Middle

Jakie są sposoby użycia słowa kluczowego const w Dart?

sobes.tech AI

Odpowiedź od AI

Słowo kluczowe const w Dart służy do tworzenia stałych wartości, które są określane podczas kompilacji i nie mogą być zmieniane podczas działania programu.

Sposoby użycia:

  1. Jako modyfikator zmiennej: Używa się go do deklarowania zmiennej, której wartość jest stała podczas kompilacji.

    const int speedOfLight = 299792458; // Wartość stała
    
  2. Jako modyfikator konstruktora: Konstruktor oznaczony jako const tworzy niezmiennicze instancje klasy, jeśli wszystkie jej pola są końcowe (final) lub stałe (const).

    class Point {
      final double x;
      final double y;
    
      const Point(this.x, this.y); // Konstruktor stały
    }
    
    const origin = Point(0.0, 0.0); // Tworzenie stałej instancji
    
  3. Do tworzenia stałych kolekcji: Używa się do tworzenia list, zbiorów i map, których zawartość jest stała podczas kompilacji.

    const List<int> primeNumbers = [2, 3, 5, 7, 11]; // Lista stała
    const Set<String> constants = {'pi', 'e', 'phi'}; // Zbiór stały
    const Map<String, double> mathConstants = {
      'pi': 3.14159,
      'e': 2.71828
    }; // Mapa stała
    
  4. W kontekstach, gdzie oczekiwana jest wartość stała: Na przykład podczas tworzenia widżetów w Flutterze, gdzie widżety stałe mogą być optymalizowane.

    // W kontekście Flutter
    const Text('Hello, World!'); // Stały widżet
    

Różnice od final:

  • const określa wartość znaną podczas kompilacji.
  • final określa wartość, która jest przypisywana tylko raz podczas działania i nie może być zmieniona później.
Charakterystyka const final
Czas inicjalizacji Podczas kompilacji Podczas działania (raz)
Niezmienność wartości Niezmienny Przypisany raz, potem niezmienny
Zastosowanie do instancji Tworzy stałą instancję (jeśli konstruktor jest const) Tworzy niezmienną referencję do obiektu
Zastosowanie do kolekcji Tworzy niezmienną kolekcję z niezmienną zawartością Tworzy niezmienną referencję do kolekcji (zawartość może być zmienna)