Definition eines neuen Datentyps
Eine Typdeklaration verwenden
Ein Weg aus der auf der vorherigen Seite beschriebenen Problematik besteht darin, selbst einen neuen Datentyp für den Status einzuführen.
Typdefinition ohne Benutzername
Zuerst definieren wir den Datentyp LoginStatus
ohne
Berücksichtigung des Benutzernamens.
type LoginStatus
= Abgemeldet
| Angemeldet
Die beiden Werte Abgemeldet
und Angemeldet
sind die
einzigen Werte, die Elemente vom Datentyp LoginStatus
annehmen können.
Man nennt diese Werte auch Varianten des Datentyps.
In der REPL können wir die Varianten testen:
> Abgemeldet
...
> Angemeldet
...
> status = Abgemeldet
...
Aufgabe 1
Teste und erkläre die Ausgabe in der REPL.
Aufgabe 2
Vergleiche mit dem Datentyp Bool. Wie könnte man diesen definieren? Recherchiere wie er in Elm definiert ist.
Aufgabe 3
Nutze den neu definierten Datentyp LoginStatus
,
um die Funktion begruessen
neu zu implementieren.
Schreibe eine Version mit einem if-Ausdruck und eine Version mit einem case-Ausdruck
und bewerte die Alternativen.
Typdefinition mit Benutzername
Wir wollen nun zusätzlich auch Angaben zum Benutzer speichern.
Dies macht natürlich nur Sinn, wenn ein Benutzer angemeldet ist.
Hier findest du einige Vorschläge für Definitionen des Datentyps LoginStatus
.
type LoginStatus -- Version 1
= Abgemeldet
| Angemeldet String
type alias Benutzer = -- Version 2
{ name : String
, id : Int
}
type LoginStatus
= Abgemeldet
| Angemeldet Benutzer
type LoginStatus -- Version 3
= Abgemeldet
| Angemeldet String Int
type LoginStatus -- Version 4
= Abgemeldet
| Angemeldet (String, Int)
Aufgabe 4
(a) Analysiere die Beispiele und ergänze den Lückentext.
(b)
Erzeuge Werte des Datentyps LoginStatus
in der REPL,
indem du insbesondere die Variante Angemeldet
testest.
Entscheide dich begründet für eine Variante, die du für die weitere
Implementierung verwenden möchtest.