i

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.

Suche

v
8.2.2.8.1.1.2
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/typdefinition/begruessung/lernstrecke/implementierung
dev.inf-schule.de/8.2.2.8.1.1.2
dev.inf-schule.de/@/page/OMILaiD1nKDPAifu

Rückmeldung geben