3. Zusammengesetzte Datentypen
Sie haben neben den primitiven Datentypen bereits eine Möglichkeit kennengelernt, Daten zu bündeln, nämlich Tupel. Diese sind leicht zu benutzen, haben aber einen entscheidenden Nachteil. Ich repräsentiere Ihnen mal einen Punkt als Tupel:point : (Float, Float)
point = (2.0, -3.0)
(2.0, -3.0) : (Float, Float)
Was ist jetzt die \(x\)-Kooridnate? Die erste Stelle oder die zweite? Wir haben uns auf die erste geeinigt. Wie können wir einen Kreis repräsentieren? Klar: als Tripel. Zwei Zahlen für den Mittelpunkt und eine für den Radius:
circle : (Float, Float, Float)
circle = (2.0, -3.0, 0.7)
Das geht! In Elm können Sie Tripel verwenden. Dann hört es aber auf. Quadrupel können Sie nicht verwenden. Wie repräsentieren wir einen Punkt im dreidimensionalen Raum? Einfach:
point : (Float, Float, Float)
point = (2.0, -3.0, 0.7)
Sehen Sie das Problem? Die Bezeichner point
und circle
haben die gleichen Werte! Dass das eine Tripel einen Kreis und das andere einen
Punkt im dreidimensionalen Raum repräsentiert, ist nur aus dem Zusammenhang
(und den suggestiven Namen der Bezeichner) klar.
Nehmen wir ein anderes Beispiel. Wir wollen Kalenderdaten wie
3. Oktober 2023 in Elm verarbeiten. Wir könnten dieses
Datum natürlich als Tripel darstellen: (3, 10, 2023)
.
Wenn Sie aber mit einem amerikanischen Team zusammenarbeiten, könnten Ihre
Kollegen das als den 10. März 2023 interpretieren (oder schlimmer: Code schreiben,
der annimmt, dass die Daten im Format (month, day, year)
vorliegen. Ihre Chinesischen
Kollegen dagegen würden wahrscheinlich das Format (year, month, day)
verwenden.
Sie kommen recht schnell in Teufels
Küche, wenn beim Programmieren nicht sonnenklar ist, was Ihre Daten repräsentieren.
Daher stellen fast alle modernen Programmiersprachen Wege zur Verfügung, neue Typen
wie Circle
oder Point3d
oder Date
zu definieren. Die
Verwechslungsgefahr
ist dann deutlich niedriger, und die Wiederverwendbarkeit Ihres Codes wird deutlich höher.