مسیرها
/
F#
F#
/
تمرین‌ها
/
رزرو نوبت زیبایی
رزرو نوبت زیبایی

رزرو نوبت زیبایی

تمرین یادگیری

مقدمه

تاریخ و زمان

یک DateTime در F# شیئی تغییرناپذیر است که هم اطلاعات تاریخ و هم اطلاعات زمان را در خود دارد. نمونه‌های DateTime با فراخوانی متدهایشان دستکاری می‌شوند. وقتی یک DateTime ساخته شد، مقدارش هرگز تغییر نمی‌کند. هر متد یا تابعی که به نظر برسد یک DateTime را تغییر می‌دهد، در واقع یک DateTime تازه برمی‌گرداند.

نمایش متنی تاریخ و زمان به «فرهنگ» وابسته است. یک DateTime را در نظر بگیرید که تاریخش ۲۸ مارس ۲۰۱۹ و زمانش ۱۴:۳۰:۵۹ تنظیم شده است. اگر این DateTime را با فرهنگ en-US (انگلیسی آمریکایی) به string تبدیل کنید، نتیجه "3/28/19 2:30:59 PM" می‌شود. با فرهنگ fr-BE (فرانسوی بلژیکی) همان کد مقدار دیگری برمی‌گرداند: "28/03/19 14:30:59".

دانستن اینکه کدام متدهای DateTime به فرهنگ وابسته‌اند مهم است. به طور کلی، هر متد DateTime که با stringها سر و کار دارد (چه به عنوان ورودی و چه خروجی) به فرهنگ جاری وابسته است.

دستورالعمل‌ها

در این تمرین روی یک برنامه‌ریز نوبت‌دهی برای یک سالن زیبایی در نیویورک کار می‌کنید که در ۱۵ سپتامبر ۲۰۱۲ افتتاح شد.

چهار وظیفه دارید که همه‌ی آن‌ها به تاریخ‌های نوبت مربوط می‌شوند. تاریخ‌ها و زمان‌ها از یکی از این سه قالب زیر استفاده می‌کنند:

  • "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 را پیاده‌سازی کنید که یک تاریخ نوبت می‌گیرد و بررسی می‌کند آیا نوبت در بعدازظهر است (بزرگ‌تر یا مساوی ۱۲:۰۰ و کوچک‌تر از ۱۸:۰۰):

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 را پیاده‌سازی کنید که تاریخ سالگرد امسال را برمی‌گرداند، یعنی ۱۵ سپتامبر:

anniversaryDate()
// => DateTime(2019, 9, 15, 0, 0, 0)
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
F# Exercism

آماده‌اید رزرو نوبت زیبایی را شروع کنید؟

در Exercism ثبت‌نام کنید تا F# را همراه با 18 مفهوم148 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.