الدرس 7 من 10

تعريف الطرق

هدف الدرس

وسائط مسمّاة و ? و !

01

الشرح

تعرّف الطريقة بـ def وتُغلقها بـ end. ولا تحتاج return: قيمة آخر سطر يُنفَّذ فيها هي ما تُرجعه، وreturn تبقى للخروج المبكّر.

والوسيط يأخذ قيمة افتراضية بعلامة =: def total(price, qty = 1). والوسائط المسمّاة تُكتب بنقطتين: discount: 0، ويمرّرها المستدعي باسمها: total(50, 3, discount: 20)، فيُفهم السطر دون الرجوع إلى التعريف، ولا يختلط رقمان متجاوران.

وللأسماء أعراف تحمل معنى: الطريقة المنتهية بـ ? سؤال يُرجع true أو false، مثل empty?. والمنتهية بـ ! نسخة «خطرة» تعدّل الكائن في مكانه غالبًا: strip تُرجع نصًّا جديدًا، وstrip! تعدّل النصّ نفسه.

والفخّ أن كثيرًا من طرق ! تُرجع nil إن لم تجد ما تغيّره: "VIP".upcase! تُرجع nil، فـ code.strip!.upcase! تنهار مع أول رمز نظيف. استعمل ! لتعديل متغيّر في مكانه، ولا تعتمد على ما تُرجعه.

02

المطلوب

عرّف total(price, qty = 1, discount: 0) تُرجع السعر في الكمية ناقص الخصم، وfree_shipping?(amount) تُرجع true من 200 فأكثر، وnormalize(code) تُرجع الرمز بلا مسافات وبأحرف كبيرة دون أن تمسّ النصّ الذي مُرِّر إليها. ثم نظّف coupon في مكانه بـ strip! وupcase!.

معايير التصحيح

6 معايير
  1. total بالكمية الافتراضية 1 وبلا خصم
  2. total بالكمية والخصم المسمّى
  3. free_shipping? تُرجع true أو false
  4. normalize تُرجع نصًّا جديدًا ولا تمسّ الأصل
  5. normalize تعمل مع رمز نظيف أصلًا
  6. coupon نُظّف في مكانه بـ !
main.rb
المخرجاتRuby 3.4 · ruby.wasm

جارٍ تحميل Ruby… نحو 8MB مرّة واحدة، ثم يحفظها المتصفح.

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».