Track
/
Gleam
Gleam
/
Esercizi
/
Classifica meteo
Classifica meteo

Classifica meteo

Esercizio di apprendimento

Introduzione

Costanti

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.

Ordini

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]

Istruzioni

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.

1. Converti i Fahrenheit in Celsius

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

2. Confronta due temperature

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

3. Ordina le città per temperatura

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)))
// ]
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Gleam Exercism

Vuoi iniziare Classifica meteo?

Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.