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.
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]
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.
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
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
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)))
// ]
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.