Назад к вопросам
Middle
161
questionbank

Какие существуют способы использования ключевого слова const в Dart?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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) Создает неизменяемую ссылку на объект
Применение к коллекциям Создает неизменяемую коллекцию с неизменяемым содержимым Создает неизменяемую ссылку на коллекцию (содержимое может быть изменяемым)