Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

القيم الافتراضية للمعاملات

جزء من قسم الأساسيات في رحلة Ruby على Coddy. الدرس 53 من 88.

أحيانًا تريد أن تكون للطريقة قيمة احتياطية منطقية عندما لا يتم توفير وسيطة. تتيح لك قيم المعلمات الافتراضية تحديد القيمة التي ينبغي أن تكون للمعلمة إذا لم يحددها المستدعي.

لتعيين قيمة افتراضية، استخدم علامة = بعد اسم المَعلمة:

def greet(name = "friend")
  puts "Hello, #{name}!"
end

greet("Alice")  # المخرجات: Hello, Alice!
greet           # المخرجات: Hello, friend!

عندما تستدعي greet دون وسيطة، تستخدم Ruby القيمة "friend" كقيمة افتراضية. وعندما تقدّم وسيطة، فإنها تتجاوز القيمة الافتراضية.

يمكنك مزج المعاملات العادية مع المعاملات الافتراضية، لكن يجب أن تأتي المعاملات ذات القيم الافتراضية بعد تلك التي لا تحتوي عليها:

def power(base, exponent = 2)
  base ** exponent
end

puts power(5)     # المخرجات: 25 (5 مربعاً)
puts power(2, 3)  # المخرجات: 8 (2 مكعباً)

هذا يجعل الأساليب أكثر مرونة. يمكن للمتصلين توفير المعلومات الأساسية فقط، بينما تعود التفاصيل الاختيارية إلى قيم افتراضية معقولة.

challenge icon

التحدي

سهل

عرّف method تُسمّى multiply وتأخذ parameterين: a وb. يجب أن تكون قيمة b الافتراضية هي 1. يجب أن تُرجع method حاصل ضرب a وb.

اقرأ عددين صحيحين من input:

  1. العدد الأول (سيُوفَّر دائمًا)
  2. العدد الثاني (قد يُوفَّر أو لا يُوفَّر)

إذا تم توفير input واحد فقط، فاستدعِ method باستخدام ذلك الوسيط فقط (مع استخدام القيمة default لـ b). وإذا تم توفير inputين، فاستدعِ method باستخدام كلا الوسيطين.

اطبع result الخاص باستدعاء method.

سيكون تنسيق input كما يلي:

  • السطر الأول: العدد الأول
  • السطر الثاني: إما عدد أو الكلمة none

على سبيل المثال، إذا كانت قيمتا input هما 7 و3:

21

إذا كانت قيمتا input هما 5 وnone:

5

إذا كانت قيمتا input هما 12 و4:

48

جرّب بنفسك

# اقرأ الإدخال
a = gets.chomp.to_i
b_input = gets.chomp

# TODO: عرّف الدالة multiply مع المعامل b بقيمة افتراضية تساوي 1


# TODO: استدعِ الدالة بشكل مناسب بناءً على ما إذا كان b_input هو "none" أو رقماً
# إذا كان b_input هو "none"، استدعِ multiply مع a فقط
# إذا كان b_input رقماً، استدعِ multiply مع كل من a و b

# اطبع النتيجة
puts result
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Ruby عبر الإنترنت