Aktualisierung von Datensätzen
Attributwerte setzen
Betrachte die folgende Situation: Eine Schülerin bzw. ein Schüler hat bereits eine private Mailadresse. Diese private Mailadresse soll jetzt durch die Schulmailadresse ersetzt werden.
module Mailadressen exposing (..)
type alias Person =
{
vorname: String,
nachname: String,
geburtsdatum:
{
tag: Int,
monat: Int,
jahr: Int
},
email: String
}
person1: Person
person1 =
{
vorname = "Anuk",
nachname = "Franck",
geburtsdatum =
{
tag = 6,
monat = 6,
jahr = 2006
},
email = "anuk@franck.de"
}
mailadresse: Person -> String
mailadresse datensatz =
let
{ vorname, nachname } = datensatz
in
vorname ++ "." ++ nachname ++ "@meine-schule.de"
Der folgende Dialog in der REPL zeigt, wie man Attributwerte gezielt setzen kann.
> import Mailadressen exposing (..)
> person1
{ email = "anuk@franck.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: Person
> { person1 | email = "test@meine-schule.de" }
{ email = "test@meine-schule.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: { email : String
, geburtsdatum : { jahr : Int, monat : Int, tag : Int }
, nachname : String
, vorname : String
}
> { person1 | email = mailadresse person1 }
{ email = "Anuk.Franck@meine-schule.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: { email : String
, geburtsdatum : { jahr : Int, monat : Int, tag : Int }
, nachname : String
, vorname : String
}
Aufgabe 1
Teste das selbst und erkläre die Ausdrücke zur Bearbeitung eines Records.
Aufgabe 2
Die Bearbeitung eines Records liefert einen neuen Record. Erläutere das anhand des folgenden Dialogs in der REPL.
> import Mailadressen exposing (..)
> person1
{ email = "anuk@franck.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: Person
> { person1 | email = mailadresse person1 }
{ email = "Anuk.Franck@meine-schule.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: { email : String
, geburtsdatum : { jahr : Int, monat : Int, tag : Int }
, nachname : String
, vorname : String
}
> person1
{ email = "anuk@franck.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: Person
> person1neu = { person1 | email = mailadresse person1 }
{ email = "Anuk.Franck@meine-schule.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: { email : String
, geburtsdatum : { jahr : Int, monat : Int, tag : Int }
, nachname : String
, vorname : String
}
> person1
{ email = "anuk@franck.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: Person
> person1neu
{ email = "Anuk.Franck@meine-schule.de", geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: { email : String
, geburtsdatum : { jahr : Int, monat : Int, tag : Int }
, nachname : String
, vorname : String
}
Aufgabe 3
Ändere die Definition der Funktion mailadresse
so ab, dass Personen, die bereits eine private Mailadresse haben, eine
Schulmailadresse erhalten.