Dart typedef Part 1

Dart Language
Dart ist aktuell in der Version 2.13 verfügbar. Die neueste Version bringt unter anderem type aliases, aber dazu in einem andern Post mehr.

Ich weiß nicht wie es Ihnen geht, aber Ich habe mich bis jetzt nicht mit dem Thema typedef befasst. Ich nehme die aktuelle Version zum Anlass das zu ändern.

Den Begriff alias kennt man: Etwas, das bereits einen Namen hat, einen anderen, neuen Namen geben. Michael zum Beispiel könnte ja auch bekannt sein, als "Biker Mike". Auf Dart bezogen sieht das aber anders aus.

typedef

Frischen wir aber unser Wissen auf. So definieren Sie eine Integer Variable:

int nummer = 2;

Was tun Sie hier aber genau ?: Sie bestimmen zuerst den Typ, engl. type, der Variable. Im Beispiel oben mit int für Integer. Anschliessend wird eine Bezeichnung vergeben: nummer .

Die Wertzuweisung dürfte klar sein. typedef in Dart macht das selbe, aber für Funktionen.

Betrachten Sie diesen Code:

typedef Senden = void Function(String nachricht);

Nach dem Schlüsselwort typedef müssen Sie den Bezeichner für den neuen Typ angeben, im Code oben ist das "Senden". Rechts vom = wird dieser neue Typ definiert. Es handelt sich um eine Funktion, die keinen Wert zurückgibt (void) und die erwartet, das man ihr eine Zeichenkette übergibt (String nachricht).

Der praktische Einsatz:

 Senden sende = nachrichtSenden;

Im Code oben wird eine Variable vom Typ Senden definiert, mit dem Bezeichner sende. Ihr wird die Funktion nachrichtSenden zugewiesen. 

Betrachten Sie das komplette Beispiel:

typedef Senden = void Function(String nachricht);
void nachrichtSenden(String nachricht) {
  print(nachricht);
}
void emailSenden(String nachricht) {
  print(nachricht);
}
void main() {
  Senden sende = nachrichtSenden;
  sende("Hallo, dies ist eine Textnachricht");
  sende = emailSenden;
  sende("Hallo, dies ist eine E-Mail");
}

Wenn Sie den Code oben betrachten, entdecken Sie zwei Funktionen. Beide entsprechen vom Format her, den Vorgaben die wir mit typedef Senden gemacht haben !
Mit Senden sende = nachrichtSenden; weisen Sie sende die Funktion nachrichtSenden zu.
sende selbst verwenden Sie anschliessend wie eine normale Funktion.

Praktischer Nutzen ?


In grösseren Projekten ist es durchaus möglich, das Sie eine Funktion mehrmals, aber in unterschiedlichen Zusammenhängen verwenden.
Sie können zum Beispiel mit Senden warnung oder Senden adresse zwei Variablen definieren. Beide können die gleiche Funktion zu gewiesen bekommen. Sie sind aber von der Bezeichnung her im jeweiligen Codeabschnitt besser verständlich.    

Die Funktionen im Beispiel oben sind sehr einfach. Selbstverständlich können Sie komplett ausgebaute Funktionen mit typedef definieren. 
Zum Abschluss hier noch der Hinweis, das die Möglichkeiten von typedef von den Entwicklern weiter ausgebaut wurden. Dazu mehr in einem der nächsten Posts.




Kommentare

Beliebte Posts aus diesem Blog

Material Design in Flutter Teil 2

Dart Basic: Listen Part 1

Listen in Dart (2021): Part 1 List.filled List.empty und List.add