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.

module Mailadressen exposing (..)

-- 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
        }
    }
> import Mailadressen exposing (..)
> 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.

> import Mailadressen exposing (..)
> 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.

> import Mailadressen exposing (..)
> .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.

module Mailadressen exposing (..)

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.

module Mailadressen exposing (..)

...

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

Suche

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

Rückmeldung geben