Sobes.tech
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:

    • final tiek inicializēts izpildes laikā (runtime) pēc pirmās piekļuves.
    • const tiek inicializēts kompilācijas laikā (compile-time).
  • Vērtību tips:

    • final mainīgais var saturēt vērtību, kas tiek aprēķināta izpildes laikā.
    • const mainī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