i

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.

Suche

v
110.2.8.1.1.6
inf-schule.de/fp_elm_alteversion/elm_programme/datensaetze/datenrecord/lernstrecke/aktualisierung
inf-schule.de/110.2.8.1.1.6
inf-schule.de/@/page/xQXO4jj8CpcJmN2W

Rückmeldung geben