Kurzusok
/
Gleam
Gleam
/
Feladatok
/
Időjárás-rangsor
Időjárás-rangsor

Időjárás-rangsor

Tanulófeladat

Bevezetés

Konstansok

A Gleam konstansai segítségével nevet adhatunk értékeknek. A const kulcsszóval definiáljuk őket.

pub const pi: Float = 3.14159

pub fn circle_area(radius: Float) -> Float {
  radius *. radius *. pi
}

Ha a pub kulcsszóval definiáljuk őket, a modulkonstansok más modulokból is elérhetők, egyébként csak abból a modulból érhetők el, amelyben definiáltuk őket.

Sorrend

A Gleam standard könyvtárának gleam/order modulja tartalmazza az Order típust, amelyet értékek összehasonlítására használunk.

Az Order definíciója így néz ki:

pub type Order {
  Gt
  Eq
  Lt
}

A típusnak három változata van, amelyek egy érték és egy másik érték viszonyát írják le:

  • Gt - az érték nagyobb, mint a másik érték.
  • Eq - az érték egyenlő a másik értékkel.
  • Lt - az érték kisebb, mint a másik érték.

Ha egy adattípus összehasonlítható nagyság szerint, a modulok gyakran definiálnak egy compare függvényt, amely Order értéket ad vissza. Például a gleam/float és a gleam/int is definiál compare függvényt, amelyek rendre a lebegőpontos számokon, illetve az egész számokon működnek.

int.compare(1, 2)
// -> Lt

int.compare(2, 2)
// -> Eq

float.compare(1.0, 2.0)
// -> Lt

A rendező függvények, például a list.sort, gyakran olyan függvényt várnak, amely Order értéket ad vissza, így a hívó határozhatja meg, hogyan rendeződjön a lista.

list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]

Utasítások

Tori klímaújságíró, és cikket szeretne írni a különböző városok időjárásáról. Adatai vannak a különböző városok időjárásáról, és a hőmérsékletük alapján szeretné rangsorolni őket, csakhogy a hőmérsékletek egy része Fahrenheitben, más része Celsiusban van. Segítségre van szüksége ahhoz, hogy a hőmérsékleteket ugyanabba a mértékegységbe váltsa, és sorrendbe állítsa őket.

1. Fahrenheit átváltása Celsiusra

Definiáld a fahrenheit_to_celsius függvényt, amely argumentumként egy Fahrenheitben megadott hőmérsékletet kap, és visszaadja a hőmérsékletet Celsiusban.

A Fahrenheit Celsiusra váltásához vonj le 32-t a Fahrenheit-értékből, majd oszd el az eredményt 1,8-del.

fahrenheit_to_celsius(72.5)
// -> 22.5

2. Két hőmérséklet összehasonlítása

Definiáld a compare_temperature függvényt, amely két hőmérsékletet kap, és egy Order értéket ad vissza, amely jelzi, hogy az első hőmérséklet kisebb-e, egyenlő-e vagy nagyobb-e, mint a második hőmérséklet.

compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt

3. Városok rendezése hőmérséklet szerint

Definiáld a sort_cities_by_temperature függvényt, amely városok egy listáját kapja, és a leghidegebbtől a legmelegebbig adja vissza őket.

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)))
// ]
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Gleam Exercism

Készen állsz elkezdeni a(z) Időjárás-rangsor feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Gleam nyelvet 33 fogalom122 feladat segítségével, valódi emberi mentorálással, mindez ingyen.