ثابتها در Gleam راهی برای گذاشتن اسم روی مقدارها هستند. آنها با کلیدواژهی const تعریف میشوند.
pub const pi: Float = 3.14159
pub fn circle_area(radius: Float) -> Float {
radius *. radius *. pi
}
وقتی ثابتهای یک ماژول با کلیدواژهی pub تعریف شوند، میتوان از ماژولهای دیگر به آنها دسترسی داشت؛ در غیر این صورت، دسترسی به آنها فقط از داخل همان ماژولی ممکن است که در آن تعریف شدهاند.
ماژول gleam/order در کتابخانهی استاندارد Gleam شامل نوع Order است که برای مقایسهی مقدارها به کار میرود.
تعریف Order به این شکل است:
pub type Order {
Gt
Eq
Lt
}
این نوع سه گونه دارد و هر گونه برای نشان دادن رابطهی بین یک مقدار و مقداری دیگر به کار میرود:
Gt: مقدار بزرگتر از مقدار دیگر است.Eq: مقدار برابر با مقدار دیگر است.Lt: مقدار کوچکتر از مقدار دیگر است.اگر بتوان یک نوع داده را از نظر بزرگی مقایسه کرد، معمولاً ماژول یک تابع compare تعریف میکند که یک مقدار Order برمیگرداند. برای نمونه، gleam/float و gleam/int توابع compare را تعریف میکنند که بهترتیب روی floatها و intها کار میکنند.
int.compare(1, 2)
// -> Lt
int.compare(2, 2)
// -> Eq
float.compare(1.0, 2.0)
// -> Lt
توابع مرتبسازی مانند list.sort معمولاً تابعی میگیرند که یک مقدار Order برمیگرداند؛ به این ترتیب فراخوان میتواند تعیین کند که لیست چگونه باید مرتب شود.
list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]
توری روزنامهنگار حوزهی اقلیم است و میخواهد مقالهای دربارهی آبوهوای شهرهای مختلف بنویسد. او دادههایی دربارهی آبوهوای شهرهای مختلف دارد و میخواهد آنها را بر اساس دمایشان رتبهبندی کند، اما بعضی از دماها بر حسب فارنهایت و بعضی بر حسب سلسیوس هستند. او به کمک شما نیاز دارد تا دماها را به واحد یکسان تبدیل کنید و آنها را رتبهبندی کنید.
تابع fahrenheit_to_celsius را تعریف کنید که دمایی بر حسب فارنهایت را به عنوان آرگومان میگیرد و همان دما را بر حسب سلسیوس برمیگرداند.
برای تبدیل فارنهایت به سلسیوس، ۳۲ را از مقدار فارنهایت کم کنید و سپس نتیجه را بر ۱٫۸ تقسیم کنید.
fahrenheit_to_celsius(72.5)
// -> 22.5
تابع compare_temperature را تعریف کنید که دو دما میگیرد و یک مقدار Order برمیگرداند که نشان میدهد دمای اول کمتر از دمای دوم است، با آن برابر است یا بیشتر از آن است.
compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt
تابع sort_cities_by_temperature را تعریف کنید که فهرستی از شهرها میگیرد و آنها را از سردترین به گرمترین برمیگرداند.
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)))
// ]