Чӣ гуна истифода бурдани калимаи калидии const дар Dart?
sobes.tech AI
Ҷавоб аз AI
Калидвожа const дар дар истифода мешавад барои эҷоди арзишҳои доимӣ, ки дар вақти компилятсия муайян мешаванд ва дар вақти иҷрои барнома тағйирнопазир мебошанд.
Роҳҳои истифода:
-
Ҳамчун модификатори тағйирёбанда: Барои эълон кардани тағйирёбанда, ки арзиши он дар вақти компилятсия доимӣ аст.
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 бошад) |
Эҷод мекунад истинод ғайрифаъол ба объект |
| Муштарак барои коллектсияҳо | Эҷод мекунад коллектсияи ғайрифаъол бо мундариҷаи ғайрифаъол | Эҷод мекунад истинод ғайрифаъол ба коллектсия (мундариҷа метавонад тағйирёбад) |