Dart-Programmierung - Variablen
Eine Variable ist „ein benannter Bereich im Speicher“, in dem Werte gespeichert werden. Mit anderen Worten, es fungiert als Container für Werte in einem Programm. Variablennamen werden als Bezeichner bezeichnet. Im Folgenden sind die Namensregeln für einen Bezeichner aufgeführt:
Bezeichner können keine Schlüsselwörter sein.
Bezeichner können Alphabete und Zahlen enthalten.
Bezeichner dürfen keine Leerzeichen und Sonderzeichen enthalten, außer dem Unterstrich (_) und dem Dollarzeichen ($).
Variablennamen dürfen nicht mit einer Zahl beginnen.
Geben Sie Syntax ein
Eine Variable muss deklariert werden, bevor sie verwendet wird. Dart verwendet das Schlüsselwort var, um dasselbe zu erreichen. Die Syntax zum Deklarieren einer Variablen lautet wie folgt:
var name = 'Smith';
Alle Variablen in Dart speichern einen Verweis auf den Wert, anstatt den Wert zu enthalten. Die Variable namens name enthält einen Verweis auf ein String-Objekt mit dem Wert "Smith".
Dart unterstützt type-checkingindem dem Variablennamen der Datentyp vorangestellt wird. Durch die Typprüfung wird sichergestellt, dass eine Variable nur Daten enthält, die für einen Datentyp spezifisch sind. Die Syntax dafür ist unten angegeben -
String name = 'Smith';
int num = 10;
Betrachten Sie das folgende Beispiel -
void main() {
String name = 1;
}
Das obige Snippet führt zu einer Warnung, da der der Variablen zugewiesene Wert nicht mit dem Datentyp der Variablen übereinstimmt.
Ausgabe
Warning: A value of type 'String' cannot be assigned to a variable of type 'int'
Alle nicht initialisierten Variablen haben den Anfangswert null. Dies liegt daran, dass Dart alle Werte als Objekte betrachtet. Das folgende Beispiel zeigt dasselbe -
void main() {
int num;
print(num);
}
Ausgabe
Null
Das dynamische Schlüsselwort
Variablen, die ohne statischen Typ deklariert wurden, werden implizit als dynamisch deklariert. Variablen können auch mit dem dynamischen Schlüsselwort anstelle des var-Schlüsselworts deklariert werden.
Das folgende Beispiel zeigt dasselbe.
void main() {
dynamic x = "tom";
print(x);
}
Ausgabe
tom
Final und Const
Das final und constSchlüsselwörter werden verwendet, um Konstanten zu deklarieren. Dart verhindert, dass die Werte einer Variablen geändert werden, die mit dem Schlüsselwort final oder const deklariert wurde. Diese Schlüsselwörter können in Verbindung mit dem Datentyp der Variablen oder anstelle von verwendet werdenvar Stichwort.
Das constDas Schlüsselwort wird verwendet, um eine Konstante zur Kompilierungszeit darzustellen. Variablen, die mit dem deklariert wurdenconst Schlüsselwort sind implizit endgültig.
Syntax: endgültiges Schlüsselwort
final variable_name
ODER
final data_type variable_name
Syntax: const Schlüsselwort
const variable_name
ODER
const data_type variable_name
Beispiel - endgültiges Schlüsselwort
void main() {
final val1 = 12;
print(val1);
}
Ausgabe
12
Beispiel - const Schlüsselwort
void main() {
const pi = 3.14;
const area = pi*12*12;
print("The output is ${area}");
}
Das obige Beispiel deklariert zwei Konstanten: pi und area, Verwendung der constStichwort. Dasarea Der Wert der Variablen ist eine Konstante zur Kompilierungszeit.
Ausgabe
The output is 452.15999999999997
Note - Nur constVariablen können verwendet werden, um eine Kompilierungszeitkonstante zu berechnen. Konstanten zur Kompilierungszeit sind Konstanten, deren Werte zur Kompilierungszeit bestimmt werden
Beispiel
Dart löst eine Ausnahme aus, wenn versucht wird, mit dem deklarierte Variablen zu ändern finaloder const Schlüsselwort. Das folgende Beispiel zeigt dasselbe -
void main() {
final v1 = 12;
const v2 = 13;
v2 = 12;
}
Der oben angegebene Code löst den folgenden Fehler aus als 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)