Junior
Kāda ir atšķirība starp atslēgvārdiem final un const Dart?
sobes.tech AI
Atbilde no AI
final un const tiek izmanto, lai izveidotu mainīgos, kuru vērtības nevar mainīties pēc inicializācijas:
Galvenās atšķirības:
-
Inicializācijas laiks:
finaltiek inicializēts izpildes laikā (runtime) pēc pirmās piekļuves.consttiek inicializēts kompilācijas laikā (compile-time).
-
Vērtību tips:
finalmainīgais var saturēt vērtību, kas tiek aprēķināta izpildes laikā.constmainīgais jāglabā vērtība, kas var tikt aprēķināta kompilācijas laikā (literāli, konstantes izteiksmes rezultāts).
-
Konstantētība:
final: Mainīgais ir konstants, bet vērtība, uz kuru tas norāda (ja tas ir objekts), var būt maināma.const: Mainīgais ir konstants, un vērtība, uz kuru tas norāda, arī jābūt konstantai (nemaināmai).
Piemēri:
// final - inicializējas izpildes laikā
final DateTime now = DateTime.now(); // Vērtība ir zināma tikai runtime
// const - inicializējas kompilācijas laikā
const double pi = 3.14; // Vērtība ir zināma kompilācijas posmā
// Izmantojot const sarakstiem un kartēm, tās kļūst par nemainīgām
const List<int> constantList = [1, 2, 3];
// constantList[0] = 10; // Kļūda! Saraksts ir nemainīgs
// Izmantojot final sarakstiem un kartēm, mainīgais kļūst par nemainīgu,
// bet objekta saturs var tikt mainīts (ja objekts ir maināms)
final List<int> finalList = [1, 2, 3];
finalList[0] = 10; // Atļauts, jo List ir maināms
// final ar konstantes vērtību
final int a = 5; // Var, bet `const` ir piemērotāks
| Inicializācijas laiks | Prasības vērtībai | Objekta maināmība (ja tas ir objekts) | |
|---|---|---|---|
final |
Izpildes laikā | Var tikt aprēķināts izpildes laikā | Var būt maināms, ja objekts ir maināms |
const |
Kompilācijas laikā | Jābūt zināmam kompilācijas laikā | Jābūt nemainīgam |