i

Fachkonzept - Datensatz als Tupel

Ein Tupel bilden

Ein Datentupel fasst mehrere Daten zu einer Einheit zusammen. Die Daten werden dabei in einer vorgegebenen Reihenfolge aufgeführt.

Tupel werden oft in Situationen benutzt (wie Datumsangaben oder Positionsangaben), in denen es fest vorgegebene Vereinarungen über das Format und die Reihenfolge der Daten gibt. Im Zweifel sollte man eher Records verwenden, da hier weniger Fehler auftreten können und sie flexibler in der Verwendung sind.

Die Abbildung verdeutlicht, wie ein Tupel in Elm dargestellt wird. Beachte, dass in Elm nur Tupel mit 2 oder 3 Datenwerten möglich sind.

Datensatz als Tupel

Hier ein Aufruf in der REPL zu diesem Tupel.

> datum = (3, 3, 2023)
(3,3,2023) : ( number, number1, number2 )

Die einzelnen Elemente eines Tupels können beliebige - auch unterschiedliche und komplexe - Datentypen besitzen.

person =
    ( { vorname = "Anuk"
      , nachname = "Franck"
      }
    , { tag = 6
      , monat = 4
      , jahr = 2015
      }
    , True
    )

Auf die Datenwerte eines Tupels zugreifen

Ein Zugriff mit Zugriffsfunktionen ist nur für Tupel mit 2 Datenwerten möglich.

> uhrzeit = (12, 44)
> Tuple.first uhrzeit
15 : number
> Tuple.second uhrzeit
35 : number1

Mustererkennung verwenden

Bei der Verarbeitung von Tupeln ist es meist sinnvoll, das Tupel mit einem Muster zu dekonstruieren.

module Metadaten exposing (..)

type alias Datum = (Int, Int, Int)
datum = (3, 3, 2023)

textAusgabe: Datum -> String
textAusgabe tupeldatum =
    let
        ( tag, monat, jahr ) = tupeldatum
    in
    "Datum: "
        ++ (String.fromInt tag) ++ "." 
        ++ (String.fromInt monat) ++ "." 
        ++ (String.fromInt jahr)
> import Metadaten exposing (..)
> textAusgabe datum
"Datum: 3.3.2023" : String

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

module Metadaten exposing (..)

...

textAusgabe ( tag, monat, jahr ) =
    "Datum: " 
        ++ (String.fromInt tag) ++ "." 
        ++ (String.fromInt monat) ++ "." 
        ++ (String.fromInt jahr)

Suche

v
8.2.2.7.5
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/datensaetze/konzept_tupel
dev.inf-schule.de/8.2.2.7.5
dev.inf-schule.de/@/page/cDUsR40DSFC7Bvrc

Rückmeldung geben