مسیرها
/
Ruby
Ruby
/
تمرین‌ها
/
تماشاگر سینما
تماشاگر سینما

تماشاگر سینما

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

مقدمه

عملگر سه‌گانه

یک «شرط سه‌گانه» روشی کوتاه‌تر برای نوشتن دستورهای ساده‌ی if/else است. اگر یک دستور if/else فقط دو شاخه داشته باشد، یکی برای وقتی که شرط «درست» است و یکی برای وقتی که «غلط» است، می‌توان آن را به‌صورت یک شرط سه‌گانه بازنویسی کرد.

شرط‌های سه‌گانه از ترکیب نمادهای ? و : برای جدا کردن اجزای یک شرط استفاده می‌کنند:

condition ? true_branch : false_branch

کدی که در سمت چپ ? قرار دارد، شرط است و کد سمت راست شامل دو شاخه‌ی ممکن است که با : از هم جدا شده‌اند. اگر شرط «درست» باشد، کدی که در سمت چپ : قرار دارد اجرا می‌شود. اگر شرط «غلط» باشد، آنگاه کدی که در سمت راست : قرار دارد اجرا می‌شود.

برای مثال:

if traffic_light == 'green'
  cross_the_road
else
  wait
end

را می‌توان به این صورت بازنویسی کرد:

traffic_light == 'green' ? cross_the_road : wait

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

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

1. بررسی کنید که آیا تماشاگر فیلم مشمول تخفیف سالمندان است

این سینما برای «بازنشستگان» تخفیف ارائه می‌دهد. هر کسی که ۶۰ سال یا بیشتر داشته باشد، برای بلیت ۱۰٫۰۰ می‌پردازد. هر کسی که جوان‌تر باشد، کل ۱۵٫۰۰ را می‌پردازد.

متد Moviegoer#ticket_price را با استفاده از یک عبارت شرطی سه‌گانه بنویسید.

Moviegoer.new(21).ticket_price
#=> 15

Moviegoer.new(65).ticket_price
#=> 10

2. بررسی کنید که آیا تماشاگر فیلم مجاز به تماشای فیلم‌های ترسناک است

این سینما یک سیستم ساده‌شده‌ی تأیید سن دارد. اگر ۱۸ سال یا بیشتر داشته باشید، می‌توانید فیلم‌های ترسناک تماشا کنید. اگر جوان‌تر باشید، نمی‌توانید.

متد Moviegoer#watch_scary_movie? را پیاده‌سازی کنید. این متد باید برگرداند که آیا فرد مجاز به تماشای فیلم هست یا نه.

Moviegoer.new(21).watch_scary_movie?
#=> true

Moviegoer.new(17).watch_scary_movie?
#=> false

3. بررسی کنید که آیا تماشاگر فیلم مشمول پاپ‌کورن رایگان است

این سینما یک برنامه‌ی باشگاه فیلم دارد. اعضا هنگام تماشای هر فیلمی پاپ‌کورن رایگان می‌گیرند.

متد Moviegoer.claim_free_popcorn! را پیاده‌سازی کنید. اگر بیننده عضو باشگاه فیلم باشد، باید پاپ‌کورن رایگانش را دریافت کند. اگر عضو نباشد، متد باید استثنای UnsupportedOperation را که در بالای کد تعریف شده است، پرتاب کند.

Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿

Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
Note

در این تمرین، انتظار می‌رود که استثنای UnsupportedOperation را برای یک محدوده‌ی مشخص تعریف کنید.

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

آماده‌اید تماشاگر سینما را شروع کنید؟

در Exercism ثبت‌نام کنید تا Ruby را همراه با 21 مفهوم121 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.