i

Verarbeitung von Datensätzen über Mustererkennung

Mailadressen erzeugen

Wir betrachten noch einmal die folgende Übergabe-Rückgabe-Situation zur Erzeugung von Mailadressen.

Übergabe: 
- Datensatz: { vorname = "Anuk", nachname = "Franck", geburtsdatum = { tag = 6, monat = 6, jahr = 2006 } }
Rückgabe: 
- Mailadresse: "Anuk.Franck@meineschule.de"

Ziel ist es wieder, eine hierzu passende Funktion mailadresse zu entwickeln.

Signatur:
mailadresse: Person -> String
Beispiele:
mailadresse { vorname = "Anuk", nachname = "Franck", ... } -> "Anuk.Frank@meineschule.de"

Einen Zugriff auf Attributwerte kann man oft indirekt mit der Vorgabe von Mustern bewirken.

module Mailadressen exposing (..)

type alias Person =
    { 
        vorname: String, 
        nachname: String, 
        geburtsdatum: 
            { 
                tag: Int, 
                monat: Int, 
                jahr: Int 
            }
    }

person1: Person
person1 = 
    { 
        vorname = "Anuk", 
        nachname = "Franck", 
        geburtsdatum = 
            { 
                tag = 6, 
                monat = 6, 
                jahr = 2006 
            }
    }

mailadresse: Person -> String
mailadresse datensatz =
    let 
        { vorname, nachname } = datensatz
    in
    vorname ++ "." ++ nachname ++ "@meine-schule.de"
> import Mailadressen exposing (..)
> mailadresse person1
"Anuk.Franck@meine-schule.de" : String

Aufgabe 1

Teste das selbst und erkläre den Aufbau der Funktionsdefinition.

Aufgabe 2

Das Muster kann auch direkt bei der Parameterangabe benutzt werden. Teste auch diese Version.

module Mailadressen exposing (..)

...

mailadresse: Person -> String
mailadresse { vorname, nachname } =
    vorname ++ "." ++ nachname ++ "@meine-schule.de"

Aufgabe 3

Hier eine Version mit Mustervorgaben bei geschachtelten Records. Stelle eine Vermutung auf, was die Funktion mailadresse leistet. Überprüfe mit einem Funktionsaufruf in der REPL.

module Mailadressen exposing (..)

...

mailadresse: Person -> String
mailadresse datensatz =
    let 
        { vorname, nachname, geburtsdatum } = datensatz
        { tag, monat, jahr } = geburtsdatum
    in
    vorname ++ "." ++ nachname ++ "." ++ (String.fromInt jahr) ++ "@meine-schule.de"

Suche

v
100.110.2.8.1.1.5
inf-schule.de/entwuerfe/fp_elm_alteversion/elm_programme/datensaetze/datenrecord/lernstrecke/verarbeitungdekomstruktion
inf-schule.de/100.110.2.8.1.1.5
inf-schule.de/@/page/A5wmBzqpvRFyllmM

Rückmeldung geben