enum - flutter-tutorial-de/dart-basics-tutorial GitHub Wiki

Table of Contents

Motivation

In manchen Programmiersituationen braucht man einen Datentyp, der nur bestimmte Werte annehmen kann, die vom Programmierer festgelegt werden. Dafür werden in Dart Enums benutzt.

Syntax

enum name { name1, name2, ... }

Beispieldefinitionen

enum Titel {
  diplIng, doktor, professor, eminenz
}
enum BeschaeftigungsTyp {
  angestellter, teamleiter, abteilungsleiter, chef
}

Beispiel

Hinweis: Jeder enum-Datentyp hat automatisch das Attribut values, das alle definierten Namen enthält.

enum Titel { diplIng, doctor, professor}
class Person{
  String name;
  Titel titel;
  Person(this.name, this.titel);
  String titelString() {
    switch(titel){
      case Titel.doctor: return 'Dr. ';
      case Titel.professor: return 'Prof. ';
      default: return '';
    }
  }
  String anrede() => 'Hallo Frau/Herr ${titelString()}$name';
}
void main() {
  var message = 'Es gibt folgende Titel:';
  for (var name in Titel.values){
    message += ' ' + name.toString().split('.')[1];
  }
  print(message);
  Person person1 = Person('Huber', Titel.diplIng);
  Person person2 = Person('Mayr', Titel.professor);
  print(person1.anrede());
  print(person2.anrede());
}
  • enum Titel { diplIng, doctor, professor} definiert die Aufzählung.
  • Mit switch(titel) findet eine Fallunterscheidung über die Werte von Titel statt.
  • case Titel.doctor: referenziert den entsprechenden Wert aus Titel.
  • Mit for (var name in Titel.values) werden alle Werte von Titel durchlaufen.
  • name.toString().split('.')[1]
    • Der Name aus dem enum wird mittels toString() in einen String gewandelt, der lautet z. B. 'Titel.professor'.
    • Dieser String wird in eine Liste zerteilt, mit '.' als Trenner. Aus Titel.professor wird ['Titel', 'professor'].
    • Von dem Feld wird der [1]der zweite Eintrag genommen (der Index wird ab 0 gezählt).
  • Person person1 = Person('Huber', Titel.diplIng); Hier wird der zweite Parameter mit einem Wert aus Titel belegt.
⚠️ **GitHub.com Fallback** ⚠️