Sobes.tech
Junior

Care este diferența dintre cuvintele cheie final și const în Dart?

sobes.tech AI

Răspuns de la AI

final și const sunt utilizate pentru crearea variabilelor ale căror valori nu pot fi modificate după inițializare.

Principalele diferențe:

  • Momentul inițializării:

    • final este inițializat în timpul execuției (runtime) la prima accesare.
    • const este inițializat în timpul compilării (compile-time).
  • Tipul valorilor:

    • Variabila final poate stoca o valoare calculată în timpul execuției.
    • Variabila const trebuie să conțină o valoare calculabilă în timpul compilării (literale, rezultat al expresiilor constante).
  • Constantitudine:

    • final: Variabila este constantă, dar valoarea la care face referire (dacă este un obiect) poate fi modificabilă.
    • const: Variabila este constantă, iar valoarea la care face referire trebuie să fie și ea constantă (imposibil de modificat).

Exemple:

// final - inițializat în timpul execuției
final DateTime now = DateTime.now(); // Valoarea este cunoscută doar în timpul runtime

// const - inițializat în timpul compilării
const double pi = 3.14; // Valoarea este cunoscută în timpul compilării

// Utilizarea const pentru liste și hărți le face immutable
const List<int> constantList = [1, 2, 3];
// constantList[0] = 10; // Eroare! Lista este imutabilă

// Utilizarea final pentru liste și hărți face variabila imutabilă,
// dar conținutul obiectului poate fi modificat (dacă obiectul este modificabil)
final List<int> finalList = [1, 2, 3];
finalList[0] = 10; // Permis, deoarece lista este modificabilă

// final cu valoare constantă
final int a = 5; // Se poate, dar `const` este mai potrivit
Inițializare Cerințe pentru valoare Mutabilitatea obiectului (dacă face referire la un obiect)
final În timpul execuției Poate fi calculată în timpul execuției Poate fi modificabil dacă obiectul este modificabil
const În timpul compilării Trebuie să fie cunoscută în timpul compilării Trebuie să fie imuabilă