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.
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"