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.