الثوابت في 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 تعملان على الأعداد العشرية والأعداد الصحيحة على التوالي.
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 التي تأخذ درجة حرارة بالفهرنهايت كوسيط وتُرجع درجة الحرارة بالمئوية.
لتحويل الفهرنهايت إلى مئوية، اطرح 32 من قيمة الفهرنهايت، ثم اقسم الناتج على 1.8.
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)))
// ]
سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.