Sobes.tech
Junior

Koja je razlika između ključnih reči final i const u Dart-u?

sobes.tech АИ

Одговор од АИ

final и const se koriste za kreiranje promenljivih čije vrednosti ne mogu biti promenjene nakon inicijalizacije.

Glavne razlike:

  • Vreme inicijalizacije:

    • final se inicijalizuje tokom izvršavanja (runtime) pri prvom pristupu.
    • const se inicijalizuje tokom kompilacije (compile-time).
  • Tip vrednosti:

    • Promenljiva final može sadržati vrednost koja se računa tokom izvršavanja.
    • Promenljiva const mora sadržati vrednost koja se može izračunati tokom kompilacije (literali, rezultat konstanti izraza).
  • Konstantnost:

    • final: Promenljiva je konstantna, ali vrednost na koju se odnosi (ako je objekat) može biti promenljiva.
    • const: Promenljiva je konstantna, i vrednost na koju se odnosi takođe mora biti konstantna (nepromenljiva).

Primeri:

// final - inicijalizuje se tokom izvršavanja
final DateTime now = DateTime.now(); // Vrednost je poznata samo u runtime

// const - inicijalizuje se tokom kompilacije
const double pi = 3.14; // Vrednost je poznata u fazi kompilacije

// Korišćenje const za liste i mape ih čini nepromenljivim
const List<int> constantList = [1, 2, 3];
// constantList[0] = 10; // Greška! Lista je nepromenljiva

// Korišćenje final za liste i mape čini promenljivu nepromenljivom,
// ali sadržaj objekta može biti izmenjen (ako je objekat promenljiv)
final List<int> finalList = [1, 2, 3];
finalList[0] = 10; // Dozvoljeno, jer je lista promenljiva

// final sa konstantnom vrednošću
final int a = 5; // Moguće, ali `const` je prikladnije
Inicijalizacija Zahtevi za vrednost Mutabilnost objekta (ako se odnosi na objekat)
final Tokom izvršavanja Može se izračunati tokom izvršavanja Može biti promenljiv ako je objekat promenljiv
const Tokom kompilacije Mora biti poznato tokom kompilacije Mora biti nepromenljivo