Dart Final Const
Der Einsatz von Final und Const in Dart ist nicht ganz einfach zu verstehen. Beide Schlüsselwörter deklarieren eine Variable, die explizit im Code initialisiert werden muss und im weiteren Verlauf nicht mehr veränderbar ist. Wir können zum Beispiel deklarieren: int zahl; .
Die Variable zahl ist nicht initialisiert und wird von Dart mit dem Wert null belegt. Das sollte man nicht mit 0 verwechseln. null lässt sich am besten mit "undefiniert" übersetzen und ist ein Sprachkonstrukt, welches sich innerhalb von Dart auch benutzen bzw abfragen lässt.
Im weiteren Verlauf des Programms können wir der Variable zahl werte zuweisen, sprich den Inhalt von zahl ändern. Bei final und const sieht das anders aus.
Beispiel Code:
Die erste Variable wird const int tage deklariert. Jeder Versuch sie im weiteren Programmverlauf zu ändern, wird eine Fehlermeldung hervorrufen. Die zweite Variable entsteht aus einer Berechnung, wobei die erste mit einbezogen wird. Das ist zulässig und ermöglicht uns im Code Konstanten zu generieren. Man beachte das diese Generierung mit der const Variable tage und dem fixen Wert 2 vollzogen wird. const deklariert eine "compile time" Variable d.h. wenn das Programm erstellt wird, werden const Variablen und generierte const Variablen, zu nicht veränderbaren Werten. Die Folge ist das man keine Konstanten aus Werten generieren kann, die während der Laufzeit des Programms eruiert werden und dementsprechend dynamisch ausfallen können.Die Variable zahl ist nicht initialisiert und wird von Dart mit dem Wert null belegt. Das sollte man nicht mit 0 verwechseln. null lässt sich am besten mit "undefiniert" übersetzen und ist ein Sprachkonstrukt, welches sich innerhalb von Dart auch benutzen bzw abfragen lässt.
Im weiteren Verlauf des Programms können wir der Variable zahl werte zuweisen, sprich den Inhalt von zahl ändern. Bei final und const sieht das anders aus.
const
Beispiel Code:
final
final ist ein enger Verwandter von const. Der Name suggeriert schon das endgültige und dementsprechend ist er zu verwenden. Mit
final int alter = 150;
definieren wir einen nicht mehr änderbaren Wert. Auch eine final Variable kann während der "Compile Time" generiert werden. Dart intern ist eine final Variable auch immer eine const Variable.
Was ist aber nun der Unterschied zwischen const und final ?
Dart initialisiert final Variablen wenn auf sie zugegriffen wird. Damit ist gemeint, das Dart die final Variablen während der Laufzeit des Programmes initialisiert. Eine final Variable kann zum Beispiel eine Liste enthalten, die auch nach der Initialisierung verändert werden kann. const Variablen hingegen werden während der "Compile Time", der Erstellungszeit des Programms, initialisiert. Das heißt, selbst wenn man die const Variable während der Laufzeit des Programms nicht verwenden würde, wird sie in der "Compile Time" initialisiert und mit einem Speicherplatz versorgt.
Kurz und vereinfachend: const = ein "Compile Time" Variablentyp, final = ein "Laufzeit" Variablentyp.
Hier noch ein Beispiel Code zum Thema:
Kommentare
Kommentar veröffentlichen