Programmazione Dart - Variabili

Una variabile è "uno spazio denominato nella memoria" che memorizza i valori. In altre parole, funge da contenitore per i valori in un programma. I nomi delle variabili sono chiamati identificatori. Di seguito sono riportate le regole di denominazione per un identificatore:

  • Gli identificatori non possono essere parole chiave.

  • Gli identificatori possono contenere alfabeti e numeri.

  • Gli identificatori non possono contenere spazi e caratteri speciali, tranne il carattere di sottolineatura (_) e il segno del dollaro ($).

  • I nomi delle variabili non possono iniziare con un numero.

Digitare Sintassi

Una variabile deve essere dichiarata prima di essere utilizzata. Dart utilizza la parola chiave var per ottenere lo stesso risultato. La sintassi per dichiarare una variabile è la seguente:

var name = 'Smith';

Tutte le variabili in dart memorizzano un riferimento al valore anziché contenere il valore. La variabile chiamata nome contiene un riferimento a un oggetto String con un valore "Smith".

Dart supporta type-checkinganteponendo al nome della variabile il tipo di dati. Il controllo del tipo garantisce che una variabile contenga solo dati specifici per un tipo di dati. La sintassi per lo stesso è data di seguito:

String name = 'Smith'; 
int num = 10;

Considera il seguente esempio:

void main() { 
   String name = 1; 
}

Lo snippet precedente genererà un avviso poiché il valore assegnato alla variabile non corrisponde al tipo di dati della variabile.

Produzione

Warning: A value of type 'String' cannot be assigned to a variable of type 'int'

Tutte le variabili non inizializzate hanno un valore iniziale di null. Questo perché Dart considera tutti i valori come oggetti. L'esempio seguente illustra lo stesso:

void main() { 
   int num; 
   print(num); 
}

Produzione

Null

La parola chiave dinamica

Le variabili dichiarate senza un tipo statico vengono dichiarate implicitamente come dinamiche. Le variabili possono essere dichiarate anche utilizzando la parola chiave dinamica al posto della parola chiave var.

Il seguente esempio illustra lo stesso.

void main() { 
   dynamic x = "tom"; 
   print(x);  
}

Produzione

tom

Finale e Cost

Il final e constparola chiave vengono utilizzate per dichiarare le costanti. Dart impedisce di modificare i valori di una variabile dichiarata utilizzando la parola chiave final o const. Queste parole chiave possono essere utilizzate insieme al tipo di dati della variabile o al posto divar parola chiave.

Il constla parola chiave viene utilizzata per rappresentare una costante del tempo di compilazione. Variabili dichiarate utilizzando ilconst le parole chiave sono implicitamente finali.

Sintassi: parola chiave finale

final variable_name

O

final data_type  variable_name

Sintassi: parola chiave const

const variable_name

O

const data_type variable_name

Esempio: parola chiave finale

void main() { 
   final val1 = 12; 
   print(val1); 
}

Produzione

12

Esempio: parola chiave const

void main() { 
   const pi = 3.14; 
   const area = pi*12*12; 
   print("The output is ${area}"); 
}

L'esempio precedente dichiara due costanti, pi e area, usando il constparola chiave. Ilarea il valore della variabile è una costante del tempo di compilazione.

Produzione

The output is 452.15999999999997

Note - Solo constle variabili possono essere utilizzate per calcolare una costante di tempo di compilazione. Le costanti in fase di compilazione sono costanti i cui valori verranno determinati in fase di compilazione

Esempio

Dart genera un'eccezione se si tenta di modificare le variabili dichiarate con l'estensione finalo la parola chiave const. L'esempio fornito di seguito illustra lo stesso:

void main() { 
   final v1 = 12; 
   const v2 = 13; 
   v2 = 12; 
}

Il codice sopra riportato genererà il seguente errore come output -

Unhandled exception: 
cannot assign to final variable 'v2='.  
NoSuchMethodError: cannot assign to final variable 'v2=' 
#0  NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:178) 
#1      main (file: Test.dart:5:3) 
#2    _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) 
#3    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)