Sobes.tech
Middle

Какви са начините за използване на ключовата дума const в Dart?

sobes.tech AI

Отговор от AI

Ключовата дума const в Dart се използва за създаване на константни стойности, които се определят по време на компилация и не могат да бъдат променяни по време на изпълнение на програмата.

Начини на използване:

  1. Като модификатор на променлива: Използва се за обявяване на променлива, чиято стойност е константна по време на компилация.

    const int speedOfLight = 299792458; // Константна стойност
    
  2. Като модификатор на конструктор: Конструктор, обявен като const, създава неизменяеми екземпляри на класа, ако всички негови полета са финални (final) или константни (const).

    class Point {
      final double x;
      final double y;
    
      const Point(this.x, this.y); // Константен конструктор
    }
    
    const origin = Point(0.0, 0.0); // Създаване на константен екземпляр
    
  3. За създаване на константни колекции: Използва се за създаване на списъци, множества и карти, съдържанието на които е константно по време на компилация.

    const List<int> primeNumbers = [2, 3, 5, 7, 11]; // Константен списък
    const Set<String> constants = {'pi', 'e', 'phi'}; // Константно множество
    const Map<String, double> mathConstants = {
      'pi': 3.14159,
      'e': 2.71828
    }; // Константна карта
    
  4. В контексти, където се очаква константна стойност: Например, при създаване на виджети във Flutter, където константните виджети могат да бъдат оптимизирани.

    // В контекста на Flutter
    const Text('Hello, World!'); // Константен виджет
    

Разлики от final:

  • const определя стойност, известна по време на компилация.
  • final определя стойност, която се присвоява само веднъж по време на изпълнение и не може да бъде променяна след това.
Характеристика const final
Време на инициализация Време на компилация Време на изпълнение (веднъж)
Променяемост на стойността Неизменяема Присвоена веднъж, след което неизменяема
Приложение към екземпляри Създава константен екземпляр (ако конструкторът е const) Създава неизменяема препратка към обект
Приложение към колекции Създава неизменяема колекция с неизменяемо съдържание Създава неизменяема препратка към колекция (съдържанието може да е променяемо)