القيم الافتراضية للمعاملات
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 53 من 88.
أحيانًا قد ترغب في أن يكون للدالة (method) قيمة بديلة منطقية عندما لا يتم توفير وسيط (argument). تتيح لك قيم المعلمات الافتراضية (Default parameter values) تحديد ما يجب أن تكون عليه المعلمة إذا لم يقم المستدعي بتحديدها.
لتعيين قيمة افتراضية، استخدم علامة = بعد اسم المعلمة:
def greet(name = "friend")
puts "Hello, #{name}!"
end
greet("Alice") # المخرجات: Hello, Alice!
greet # المخرجات: Hello, friend!عندما تستدعي greet بدون وسيط (argument)، يستخدم Ruby "friend" كقيمة افتراضية. وعندما توفر وسيطاً، فإنه يتجاوز القيمة الافتراضية.
يمكنك دمج المعاملات العادية مع المعاملات الافتراضية، ولكن يجب أن تأتي المعاملات ذات القيم الافتراضية بعد تلك التي ليس لها قيم افتراضية:
def power(base, exponent = 2)
base ** exponent
end
puts power(5) # المخرجات: 25 (5 تربيع)
puts power(2, 3) # المخرجات: 8 (2 تكعيب)هذا يجعل الأساليب (methods) أكثر مرونة. يمكن للمستدعين تقديم المعلومات الأساسية فقط بينما تعود التفاصيل الاختيارية إلى قيم افتراضية معقولة.
التحدي
سهلقم بتعريف دالة تسمى multiply تأخذ معاملين: a و b. يجب أن يكون للمعامل b قيمة افتراضية هي 1. يجب أن تعيد الدالة حاصل ضرب a و b.
اقرأ عددين صحيحين من المدخلات:
- الرقم الأول (سيتم توفيره دائمًا)
- الرقم الثاني (قد يتم توفيره أو لا يتم توفيره)
إذا تم توفير مدخل واحد فقط، فاستدعِ الدالة بهذا الوسيط فقط (باستخدام القيمة الافتراضية لـ b). إذا تم توفير مدخلين، فاستدعِ الدالة بكلا الوسيطين.
اطبع نتيجة استدعاء الدالة.
تنسيق المدخلات سيكون:
- السطر الأول: الرقم الأول
- السطر الثاني: إما رقم أو كلمة
none
على سبيل المثال، إذا كانت المدخلات 7 و 3:
21إذا كانت المدخلات 5 و none:
5إذا كانت المدخلات 12 و 4:
48ورقة مرجعية
توفر قيم المعلمات الافتراضية قيمًا احتياطية عندما لا يتم توفير الوسائط. استخدم علامة = بعد اسم المعلمة لتعيين قيمة افتراضية:
def greet(name = "friend")
puts "Hello, #{name}!"
end
greet("Alice") # المخرجات: Hello, Alice!
greet # المخرجات: Hello, friend!يجب أن تأتي المعلمات ذات القيم الافتراضية بعد المعلمات التي ليس لها قيم افتراضية:
def power(base, exponent = 2)
base ** exponent
end
puts power(5) # المخرجات: 25 (5 تربيع)
puts power(2, 3) # المخرجات: 8 (2 تكعيب)جرّب بنفسك
# قراءة المدخلات
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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ9الدوال (Methods)
تعريف الدالةمعاملات الدالةقيم الإرجاعمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية للمعاملات