Konstanten in Gleam sind eine Möglichkeit, Werten Namen zu geben. Sie werden mit dem const-Schlüsselwort definiert.
pub const pi: Float = 3.14159
pub fn circle_area(radius: Float) -> Float {
radius *. radius *. pi
}
Wenn sie mit dem pub-Schlüsselwort definiert werden, kann aus anderen Modulen auf Modulkonstanten zugegriffen werden. Andernfalls kann nur innerhalb des Moduls auf sie zugegriffen werden, in dem sie definiert wurden.
Das Modul gleam/order in der Standardbibliothek von Gleam enthält den Typ Order, mit dem Werte verglichen werden.
Die Definition von Order sieht so aus:
pub type Order {
Gt
Eq
Lt
}
Der Typ hat drei Varianten, die jeweils die Beziehung zwischen einem Wert und einem anderen Wert darstellen:
Gt: Der Wert ist größer als der andere Wert.Eq: Der Wert ist gleich dem anderen Wert.Lt: Der Wert ist kleiner als der andere Wert.Wenn ein Datentyp nach seiner Größe verglichen werden kann, ist es üblich, dass das Modul eine compare-Funktion definiert, die einen Order-Wert zurückgibt. Zum Beispiel definieren gleam/float und gleam/int compare-Funktionen, die auf Gleitkommazahlen bzw. Ganzzahlen arbeiten.
int.compare(1, 2)
// -> Lt
int.compare(2, 2)
// -> Eq
float.compare(1.0, 2.0)
// -> Lt
Sortierfunktionen wie list.sort nehmen häufig eine Funktion entgegen, die einen Order-Wert zurückgibt, sodass der Aufrufer festlegen kann, wie die Liste sortiert werden soll.
list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]
Tori ist Klimajournalistin und möchte einen Artikel über das Wetter in verschiedenen Städten schreiben. Sie hat Daten über das Wetter in verschiedenen Städten und möchte sie anhand ihrer Temperatur in eine Rangfolge bringen, aber einige der Temperaturen sind in Fahrenheit und einige in Celsius. Sie braucht deine Hilfe, um die Temperaturen in dieselbe Einheit umzurechnen und sie zu ordnen.
Definiere die Funktion fahrenheit_to_celsius, die eine Temperatur in Fahrenheit als Argument entgegennimmt und die Temperatur in Celsius zurückgibt.
Um Fahrenheit in Celsius umzurechnen, subtrahiere 32 vom Fahrenheit-Wert und teile das Ergebnis dann durch 1,8.
fahrenheit_to_celsius(72.5)
// -> 22.5
Definiere die Funktion compare_temperature, die zwei Temperaturen entgegennimmt und einen Order-Wert zurückgibt, der angibt, ob die erste Temperatur kleiner als, gleich oder größer als die zweite Temperatur ist.
compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt
Definiere die Funktion sort_cities_by_temperature, die eine Liste von Städten entgegennimmt und sie von der kältesten zur wärmsten zurückgibt.
sort_cities_by_temperature([
City(name: "London", temperature: Celsius(30.5)),
City(name: "Paris", temperature: Fahrenheit(82.1))
])
// -> [
// City(name: "Paris", temperature: Fahrenheit(82.1)),
// City(name: "London", temperature: Celsius(30.5)))
// ]
Melde dich bei Exercism an, um Gleam mit 33 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.