المسارات
/
Gleam
Gleam
/
التمارين
/
ترتيب الطقس
ترتيب الطقس

ترتيب الطقس

تمرين تعلّمي

مقدمة

الثوابت

الثوابت في 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]

التعليمات

توري صحفية متخصصة في شؤون المناخ، وتريد كتابة مقال عن الطقس في مدن مختلفة. لديها بيانات عن الطقس في مدن مختلفة وتريد ترتيبها حسب درجة حرارتها، لكن بعض درجات الحرارة بالفهرنهايت وبعضها بالمئوية. إنها تحتاج إلى مساعدتك لتحويل درجات الحرارة إلى الوحدة نفسها ثم ترتيبها.

1. حوّل الفهرنهايت إلى مئوية

عرّف الدالة fahrenheit_to_celsius التي تأخذ درجة حرارة بالفهرنهايت كوسيط وتُرجع درجة الحرارة بالمئوية.

لتحويل الفهرنهايت إلى مئوية، اطرح 32 من قيمة الفهرنهايت، ثم اقسم الناتج على 1.8.

fahrenheit_to_celsius(72.5)
// -> 22.5

2. قارن بين درجتي حرارة

عرّف الدالة compare_temperature التي تأخذ درجتي حرارة وتُرجع قيمة Order تشير إلى ما إذا كانت درجة الحرارة الأولى أقل من الثانية أو مساوية لها أو أكبر منها.

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

3. رتّب المدن حسب درجة الحرارة

عرّف الدالة 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)))
// ]
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Gleam Exercism

مستعد لبدء ترتيب الطقس؟

سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.