المسارات
/
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. تحقّق مما إذا كان لزائر السينما الحق في خصم كبار السن

توفّر السينما خصمًا لـ«معاشات الشيخوخة». كل من بلغ 60 عامًا أو أكثر يدفع 10.00 مقابل التذكرة. ومن كان أصغر يدفع 15.00 كامل المبلغ.

اكتب طريقة Moviegoer#ticket_price باستخدام عبارة شرطية ثلاثية.

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

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

2. تحقّق مما إذا كان يُسمح لزائر السينما بمشاهدة الأفلام المرعبة

تستخدم السينما نظامًا مبسّطًا للتحقق من العمر. إذا كان عمرك 18 عامًا أو أكثر يمكنك مشاهدة الأفلام المرعبة. وإذا كنت أصغر، فلا يمكنك ذلك.

نفّذ طريقة 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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.