i

Fachkonzept - Datensatz als Record

Einen Record bilden

Wenn man mehrere Daten zusammen verwalten möchte, dann kann man aus ihnen einen Datensatz bilden. Die Daten eines Datensatzes werden dabei mit Hilfe von Attributen verwaltet. Jedem Attribut wird ein Datenwert zugewiesen.

In Elm werden Datensätze mit Hilfe von Records dargestellt. Die Abbildung verdeutlicht (an einem geschachtelten Datensatz) den Aufbau eines Records.

Datensatz als Record

Hier ein Implementierung mit einer Alias-Typdefinition und einem Aufruf in der REPL zu diesem Record.

-- Definition eines Alias ist oft hilfreich, aber nicht zwingend notwendig
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
        }
    }
> person1
{ geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
    : Person

Auf die Attributwerte eines Records zugreifen

Der Zugriff erfolgt mit Hilfe der Punkt-Notation.

> person1.vorname
"Anuk" : String
> person1.geburtsdatum
{ jahr = 2006, monat = 6, tag = 6 }
    : { jahr : Int, monat : Int, tag : Int }
> person1.geburtsdatum.jahr
2006 : Int

Der Zugriff auf Attributwerte kann auch mit Hilfe von - passend zum Record gebildeten - Zugriffsfunktionen erfolgen.

> .vorname person1
"Anuk" : String
> .jahr (.geburtsdatum person1)
2006 : Int

Mustererkennung verwenden

Bei der Verarbeitung von Records ist es oft günstig, den Record mit einem Muster bestehend aus Attributen des Records zu dekonstruieren.

type alias Person =
    { vorname: String
    , nachname: String
    }

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

Kurz und sehr übersichtlich wird eine Funktionsdefinition, wenn man das Muster direkt als Parameter benutzt.


...

mailadresse { vorname, nachname } =
    vorname ++ "." ++ nachname ++ "@meine-schule.de"

Suche

v
8.2.2.7.4
inf-schule.de/deklarativ/fp_elm/elm_programme/datensaetze/konzept_record
inf-schule.de/8.2.2.7.4
inf-schule.de/@/page/JgOLHhVcc7eay76W

Rückmeldung geben