i

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.

Suche

v
8.2.2.8.1.1.1
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/typdefinition/begruessung/lernstrecke/typdeklaration
dev.inf-schule.de/8.2.2.8.1.1.1
dev.inf-schule.de/@/page/CUTMuThwKHnIZqIF

Rückmeldung geben