Fachkonzept - Datentyp
Datentypen
Elm benutzt - wie viele andere Programmiersprachen auch - Datentypen, um unterschiedlich zu verarbeitende Daten zu klassifizieren.
Ein Datentyp beschreibt eine Menge von Daten, die alle die gleiche Struktur haben und mit denen die gleichen Operationen ausgeführt werden können.
Datentypen - eine Übersicht
Die folgende Tabelle listet wichtige Datentypen und ihre Darstellung in Elm auf. Beachte, dass es weitere Datentypen zur Darstellung von Daten gibt. Wir werden sie nach Bedarf in den weiteren Abschnitten einführen.
Datentyp | Typbezeichner in Elm | Datenobjekte |
---|---|---|
ganze Zahl | Int |
Daten vom Typ Int sind alle Zahlen ..., -2, -1, 0, 1, 2, ... bis jeweils zu einer in der Programmiersprache
festgelegten Unter- bzw. Obergrenze. |
Gleitkommazahl | Float |
Daten vom Typ Float sind Gleitkommazahlen wie z. B. 4.2 oder -0.03 .
In Elm kann auch - je nach Situation - die Darstellung 4 eine Zahl vom Typ Float sein.
Beachte, dass der Genauigkeit von Gleitkommazahlen Grenzen gesetzt sind. |
Wahrheitswert | Bool |
Daten vom Typ Bool sind die Wahrheitswerte True und False . |
Zeichen | Char |
Daten vom Typ Char sind die Zeichen wie z.B. 'A' oder '?' .
Beachte, dass Zeichen in Elm mit Hochkommata dargestellt werden. |
Zeichenkette | String |
Daten vom Typ String sind Folgen von Zeichen wie z. B. "HALLO!" oder "" .
Solche Zeichenketten werden in Elm mit doppelten Anführungszeichen dargestellt. |
... | ... | ... |
Typvariablen
Manchen Sprachen - wie z.B. auch Elm - nutzen das Konzept von
Typvariablen.
Typvariablen können an Stellen erscheinen, an denen man ansonsten
konkrete Datentypen erwarten würde.
In Elm gibt es die vordefinierten Typvariablen number
und appendable
.
Beachte, dass Typvariablen im Gegensatz zu Datentypen klein geschrieben werden.
An die Stelle von number
können die Datentypen Int
und Float
treten, an die Stelle von appendable
können die Datentypen String
und List
(Datentyp für Listen, den wir später noch genau kennen lernen) treten.
Explizite Typangaben
Elm erschließt sich anhand des Kontextes die Datentypen selbst. Man kann aber auch Datentypen explizit angeben.
> zahl1 = 5 -- Datentyp kann nicht klar bestimmt werden
5 : number
> zahl2 : Int -- Explizite Angabe des Datentyps
| zahl2 = 5
|
5 : Int
> zahl3 : Int -- Ergibt Fehler, da man sich nicht an die eigene Vorgabe hält
| zahl3 = 5.1
|
-- TYPE MISMATCH ---------------------------------------------------------- REPL
Something is off with the body of the `zahl3` definition:
9| zahl3 = 5.1
^^^
The body is a float of type:
Float
But the type annotation on `zahl3` says it should be:
Int
Note: Read <https://elm-lang.org/0.19.1/implicit-casts> to learn why Elm does
not implicitly convert Ints to Floats. Use toFloat and round to do explicit
conversions.