المسارات
/
F#
F#
/
التمارين
/
الحجز في صالون التجميل
الحجز في صالون التجميل

الحجز في صالون التجميل

تمرين تعلّمي

مقدمة

التواريخ والأوقات

كائن DateTime في F# هو كائن غير قابل للتغيير يحتوي على معلومات التاريخ و الوقت. يتم التعامل مع كائنات DateTime عبر استدعاء طرقها. بمجرد إنشاء DateTime، لا يمكن أن تتغير قيمته أبدًا. أي طرق/دوال تبدو وكأنها تعدل DateTime ستُرجع في الواقع DateTime جديدًا.

يعتمد التمثيل النصي للتواريخ والأوقات على الثقافة. لنأخذ DateTime تاريخه مضبوطًا على 28 مارس 2019 ووقته مضبوطًا على 14:30:59. عند تحويل هذا DateTime إلى string باستخدام ثقافة en-US (الإنجليزية الأمريكية)، فإن الناتج هو "3/28/19 2:30:59 PM". وعند استخدام ثقافة fr-BE (الفرنسية البلجيكية)، يُرجع الكود نفسه قيمة مختلفة: "28/03/19 14:30:59".

من المهم أن نفهم أي طرق DateTime تعتمد على الثقافة. بشكل عام، أي طريقة DateTime تتعامل مع strings (إما كمدخل أو كمخرج) ستكون معتمدة على الثقافة الحالية.

التعليمات

في هذا التمرين، ستعمل على مُنظّم مواعيد لصالون تجميل في نيويورك افتُتح في 15 سبتمبر 2012.

لديك أربع مهام، وكلها تتعلق بتواريخ المواعيد. ستستخدم التواريخ والأوقات واحدة من الصيغ الثلاث التالية:

  • "7/25/2019 13:45:00"
  • "July 25, 2019 13:45:00"
  • "Thursday, July 25, 2019 13:45:00:00"
Caution

ستضبط الاختبارات الإعدادات الثقافية تلقائيًا على en-US، فلا حاجة إلى ضبط الإعدادات الثقافية أو تحديدها بنفسك.

1. تحليل تاريخ الموعد

نفّذ الدالة schedule التي يمكنها تحليل تمثيل نصي لتاريخ موعد إلى صيغة DateTime المقابلة:

schedule "7/25/2019 13:45:00"
// => DateTime(2019, 7, 25, 13, 45, 0)

2. التحقق مما إذا كان الموعد قد مضى

نفّذ الدالة hasPassed التي تأخذ تاريخ موعد وتتحقق مما إذا كان الموعد قد وقع في الماضي:

hasPassed (DateTime(1999, 12, 31, 9, 0, 0))
// => true

3. التحقق مما إذا كان الموعد بعد الظهر

نفّذ الدالة isAfternoonAppointment التي تأخذ تاريخ موعد وتتحقق مما إذا كان الموعد بعد الظهر (>= 12:00 و < 18:00):

isAfternoonAppointment (DateTime(2019, 03, 29, 15, 0, 0))
// => true

4. وصف وقت الموعد وتاريخه

نفّذ الدالة description التي تأخذ تاريخ موعد وتُرجع وصفًا لذلك التاريخ والوقت:

description (DateTime(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on 3/29/2019 3:00:00 PM."

5. إرجاع تاريخ الذكرى السنوية

نفّذ الدالة anniversaryDate التي تُرجع تاريخ الذكرى السنوية لهذا العام، وهو 15 سبتمبر:

anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
F# Exercism

مستعد لبدء الحجز في صالون التجميل؟

سجّل في Exercism لتتعلّم وتتقن F# عبر 18 مفهومًا148 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.