Le costanti in Gleam sono un modo per dare un nome ai valori. Si definiscono usando la parola chiave const.
pub const pi: Float = 3.14159
pub fn circle_area(radius: Float) -> Float {
radius *. radius *. pi
}
Quando vengono definite con la parola chiave pub, le costanti di modulo sono accessibili da altri moduli; altrimenti sono accessibili solo dall'interno del modulo in cui sono definite.
Il modulo gleam/order della libreria standard di Gleam contiene il tipo Order, che viene usato per confrontare i valori.
La definizione di Order è questa:
pub type Order {
Gt
Eq
Lt
}
Il tipo ha tre varianti, ognuna usata per rappresentare la relazione tra un valore e un altro valore:
Gt: il valore è maggiore dell'altro valore.Eq: il valore è uguale all'altro valore.Lt: il valore è minore dell'altro valore.Se un tipo di dato può essere confrontato per grandezza, è comune che il modulo definisca una funzione compare che restituisce un valore di tipo Order. Per esempio, gleam/float e gleam/int definiscono funzioni compare che operano rispettivamente sui numeri in virgola mobile e sui numeri interi.
int.compare(1, 2)
// -> Lt
int.compare(2, 2)
// -> Eq
float.compare(1.0, 2.0)
// -> Lt
Le funzioni di ordinamento come list.sort di solito accettano una funzione che restituisce un valore di tipo Order, permettendo a chi chiama di definire come deve essere ordinato l'array.
list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]
Tori è una giornalista climatica e vuole scrivere un articolo sul meteo in diverse città. Ha dei dati sul meteo in diverse città e vuole classificarle in base alla loro temperatura, ma alcune temperature sono in Fahrenheit e altre in Celsius. Ha bisogno del tuo aiuto per convertire le temperature nella stessa unità e classificarle.
Definisci la funzione fahrenheit_to_celsius che prende una temperatura in Fahrenheit come argomento e restituisce la temperatura in Celsius.
Per convertire i Fahrenheit in Celsius, sottrai 32 dal valore in Fahrenheit e poi dividi il risultato per 1.8.
fahrenheit_to_celsius(72.5)
// -> 22.5
Definisci la funzione compare_temperature che prende due temperature e restituisce un valore Order che indica se la prima temperatura è minore, uguale o maggiore della seconda.
compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt
Definisci la funzione sort_cities_by_temperature che prende un array di città e le restituisce dalla più fredda alla più calda.
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)))
// ]
Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.