Какие существуют способы использования ключевого слова const в Dart?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Ключевое слово const в Dart используется для создания константных значений, которые определяются во время компиляции и не могут быть изменены в процессе выполнения программы.
Способы использования:
-
Как модификатор переменной: Применяется для объявления переменной, значение которой является константным во время компиляции.
const int speedOfLight = 299792458; // Константное значение -
Как модификатор конструктора: Конструктор, объявленный как
const, создает неизменяемые экземпляры класса, если все его поля являются окончательными (final) или константными (const).class Point { final double x; final double y; const Point(this.x, this.y); // Константный конструктор } const origin = Point(0.0, 0.0); // Создание константного экземпляра -
Для создания константных коллекций: Применяется для создания списков, наборов и карт, содержимое которых является константным во время компиляции.
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 }; // Константная карта -
В контекстах, где ожидается константное значение: Например, при создании виджетов во Flutter, где константные виджеты могут быть оптимизированы.
// В контексте Flutter const Text('Hello, World!'); // Константный виджет
Отличия от final:
constопределяет значение, известное во время компиляции.finalопределяет значение, которое присваивается только один раз во время выполнения и не может быть изменено после этого.
| Характеристика | const |
final |
|---|---|---|
| Время инициализации | Время компиляции | Время выполнения (один раз) |
| Изменяемость значения | Неизменяемое | Присваивается один раз, затем неизменяемое |
| Применение к экземплярам | Создает константный экземпляр (если конструктор const) |
Создает неизменяемую ссылку на объект |
| Применение к коллекциям | Создает неизменяемую коллекцию с неизменяемым содержимым | Создает неизменяемую ссылку на коллекцию (содержимое может быть изменяемым) |