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)