Implementierung
Zugriff auf den Payload/Nutzdaten
Um auf den Payload eines Typs zuzugreifen, müssen wir Pattern Matching verwenden. Wie dies funktioniert, zeigt das folgende Beispiel.
type MeinTyp
= ErsterFall
| ZweiterFall Int
| DritterFall String Int
| VierterFall { name : String, alter : Int }
| FuenfterFall (List Int)
meineFunktion : MeinTyp -> String
meineFunktion wert =
case wert of
ErsterFall ->
"Erster Fall"
ZweiterFall zahl ->
"Zweiter Fall mit " ++ String.fromInt zahl
DritterFall text zahl ->
"Dritter Fall mit " ++ text ++ " und " ++ String.fromInt zahl
VierterFall { name, alter } ->
"Vierter Fall mit " ++ name ++ " und " ++ String.fromInt alter
-- alternativ:
-- VierterFall person ->
-- let
-- { name, alter } = person
-- in
-- "Vierter Fall mit " ++ name ++ " und " ++ String.fromInt alter
FuenfterFall _ ->
"Fünfter Fall mit Zahlenliste"
Aufgabe 1
Experimentiere mit diesem Beispiel in der REPL. Beschreibe die Anwendung von Pattern Matching.
Aufgabe 2
(a)
Implementiere die Funktion begruessen mit der Alternative von
LoginStatus, für die du dich auf der vorherigen Seite entschieden hast.
(b)
Erweitere LoginStatus um eine Variante Timeout,
die den Zustand beschreibt, wenn ein Benutzer zu lange inaktiv war
und passe die Funktion begruessen entsprechend an.