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

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

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

مقدمه

بسته‌ها و ماژول‌ها

وارد کردن

ماژول معمولاً با «کلیدواژه»ی use بارگذاری می‌شود. این کار هم ماژول را بارگذاری می‌کند و هم «متد» import را روی آن فراخوانی می‌کند و هر نماد صادرشده‌ای را وارد می‌کند.

«نماد»های موجود در آرایه‌ی @EXPORT بسته به‌طور پیش‌فرض وارد می‌شوند. نمادهای موجود در آرایه‌ی @EXPORT_OK بسته باید به‌صورت صریح وارد شوند.

صادر کردن

برای اینکه نمادی وارد شود، ابتدا باید صادر شده باشد. ماژول Exporter همراه Perl ارائه می‌شود و یکی از راحت‌ترین گزینه‌ها برای صادر کردن است.

تعریف ماژول:

package Foo;

use Exporter ('import');
our @EXPORT_OK = ('bar');

sub bar { ... }

استفاده از ماژول:

use Foo ('bar');

bar();

ماژول‌های اصلی

در کنار Exporter، Perl مجموعه‌ی گسترده‌ای از ماژول‌های اصلی را در اختیارتان می‌گذارد که می‌توانید از آن‌ها استفاده کنید. چند نمونه که برای تمرین‌هایی که ممکن است اینجا با آن‌ها روبه‌رو شوید مفیدند عبارت‌اند از List::Util، Time::Piece و Math::BigRat.

CPAN

علاوه بر ماژول‌های اصلی، CPAN هزاران ماژول دیگر هم دارد که جامعه‌ی Perl ساخته‌اند و برای نصب در دسترس‌اند. مسیر Perl از یک cpanfile استفاده می‌کند تا مجموعه‌ای از ماژول‌ها را نصب کند که می‌توان آن‌ها را با test runner Perl در Exercism به کار برد.

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

در این تمرین روی یک برنامه‌ریز قرار ملاقات برای یک سالن زیبایی کار می‌کنید.

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

1. بررسی کنید که آیا قرار ملاقات پیش‌تر گذشته است

تابع appointment_has_passed را پیاده‌سازی کنید که یک رشته‌ی تاریخ می‌گیرد و بررسی می‌کند که آیا قرار ملاقات جایی در گذشته بوده است:

appointment_has_passed("2019-07-25T13:45:00")
// => true

رشته‌های تاریخ در قالب تاریخ و زمان ISO 8601 پاس داده می‌شوند: YYYY-mm-ddTHH:MM:SS

باید تابع خصوصی _parse_datetime را پیاده‌سازی کنید. چند ماژول هم برایتان پیشنهاد می‌شود:

2. بررسی کنید که آیا قرار ملاقات بعدازظهر است

تابع is_afternoon_appointment را پیاده‌سازی کنید که یک رشته‌ی تاریخ می‌گیرد و بررسی می‌کند که آیا قرار ملاقات بعدازظهر است (>= ۱۲:۰۰ و < ۱۸:۰۰):

is_afternoon_appointment("2019-07-25T13:45:00")
// => true

3. زمان و تاریخ قرار ملاقات را توصیف کنید

تابع describe_appointment را پیاده‌سازی کنید که یک رشته‌ی تاریخ می‌گیرد و توصیفی از آن تاریخ و زمان برمی‌گرداند:

describe_appointment("2019-07-25T13:45:00")
// => "You have an appointment on 07/25/2019 1:45 PM"

توجه کنید که ساعت در بازه‌ی ۰ تا ۱۲ قرار دارد و صفر یا فاصله‌ای در ابتدای آن نمی‌آید.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Perl Exercism

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

در Exercism ثبت‌نام کنید تا Perl را همراه با 5 مفهوم84 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.