Какви са начините за използване на ключовата дума const в Dart?
sobes.tech AI
Отговор от 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) |
Създава неизменяема препратка към обект |
| Приложение към колекции | Създава неизменяема колекция с неизменяемо съдържание | Създава неизменяема препратка към колекция (съдържанието може да е променяемо) |