var în Dart

Declară o variabilă care se poate modifica; tipul este dedus automat din valoarea inițială.

Sintaxă
var nume = valoare;      // tipul se deduce din valoare
Tip nume = valoare;      // tip scris explicit
var nume;                // dynamic, fără valoare inițială

Ce face var

var declară o variabilă locală sau un câmp a cărui valoare se poate schimba mai târziu. Tipul nu se scrie: Dart îl deduce din valoarea inițială. După var oras = 'Iași';, oras are tipul String pentru totdeauna, deci nu-i mai poți da un număr.

Poți scrie și tipul explicit în locul lui var: String oras = 'Iași';. Ghidul de stil Dart recomandă var (sau final) pentru variabilele locale și tipuri scrise pentru câmpuri, parametri și valori returnate.

Dacă scrii var x; fără valoare, tipul devine dynamic și variabila poate primi orice. De obicei e mai bine să dai o valoare sau un tip. Dacă valoarea nu se mai schimbă, folosește final.

Exemple

Exemplul 1: Tipul dedus din valoare

runtimeType arată tipul ales de Dart. Variabilele se pot modifica, dar rămân de același tip.

void main() {
  var nume = 'Ana';
  var varsta = 17;
  var medie = 9.35;
  var promovat = true;

  print('${nume.runtimeType} ${varsta.runtimeType} ${medie.runtimeType} ${promovat.runtimeType}');

  varsta = varsta + 1;
  nume = 'Ana Popescu';
  print('$nume are acum $varsta ani.');
}

Rezultat

String int double bool
Ana Popescu are acum 18 ani.

Exemplul 2: Acumularea unui total

O variabilă var care se schimbă în buclă. Tipul ei este double pentru că valoarea inițială este 0.0.

void main() {
  final preturi = [12.5, 7.0, 30.25];
  var total = 0.0;
  for (final pret in preturi) {
    total += pret;
  }
  print('Total coș: ${total.toStringAsFixed(2)} lei');
}

Rezultat

Total coș: 49.75 lei

Exemplul 3: var fără valoare inițială

Fără valoare, variabila este dynamic: acceptă un text, apoi un număr. Analizorul nu te mai ajută să prinzi greșelile, de aceea este rar folosit.

void main() {
  var orice;
  orice = 'Cluj';
  print('$orice (${orice.runtimeType})');
  orice = 42;
  print('$orice (${orice.runtimeType})');
}

Rezultat

Cluj (String)
42 (int)

Greșeli frecvente

  • var x = 5; x = 'cinci'; dă eroarea A value of type 'String' can't be assigned to a variable of type 'int': tipul a fost fixat la prima atribuire.
  • var total = 0; urmat de total += 2.5;: total este int, iar adunarea dă double. Pornește de la 0.0.
  • Folosirea lui var pentru valori care nu se schimbă: final spune mai clar intenția.

Comenzi înrudite

  • final: Declară o variabilă care primește valoarea o singură dată și nu mai poate fi reatribuită.
  • const: Declară o constantă calculată la compilare; obiectele const sunt complet imuabile și partajate.
  • late: Amână inițializarea unei variabile nenule: valoarea se dă mai târziu sau se calculează la prima folosire.
  • dynamic: Tipul care dezactivează verificarea statică: orice metodă se poate apela, verificarea se face la rulare.