العامل الثلاثي طريقة أقصر لكتابة جمل 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
في هذا التمرين ستضع قواعد لموقع سينما على الإنترنت.
توفّر السينما خصمًا لـ«معاشات الشيخوخة». كل من بلغ 60 عامًا أو أكثر يدفع 10.00 مقابل التذكرة. ومن كان أصغر يدفع 15.00 كامل المبلغ.
اكتب طريقة Moviegoer#ticket_price باستخدام عبارة شرطية ثلاثية.
Moviegoer.new(21).ticket_price
#=> 15
Moviegoer.new(65).ticket_price
#=> 10
تستخدم السينما نظامًا مبسّطًا للتحقق من العمر. إذا كان عمرك 18 عامًا أو أكثر يمكنك مشاهدة الأفلام المرعبة. وإذا كنت أصغر، فلا يمكنك ذلك.
نفّذ طريقة Moviegoer#watch_scary_movie?.
ينبغي أن تُرجع ما إذا كان يُسمح للشخص بمشاهدة الفيلم أم لا.
Moviegoer.new(21).watch_scary_movie?
#=> true
Moviegoer.new(17).watch_scary_movie?
#=> false
تمتلك السينما برنامج نادي الأفلام. يحصل الأعضاء على فشار مجاني عند مشاهدة أي فيلم.
نفّذ طريقة 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)
في هذا التمرين، يُتوقّع منك تعريف الاستثناء UnsupportedOperation لنطاق محدّد.
سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.