القيم الافتراضية
جزء من قسم الأساسيات في رحلة Swift على Coddy. الدرس 57 من 86.
أحيانًا تكون للمعامل قيمة تُستخدم في معظم الأوقات. وبدلًا من مطالبة المستدعي بتوفيرها في كل مرة، يمكنك تعيين قيمة افتراضية لذلك المعامل.
لتعيين قيمة افتراضية، استخدم عامل الإسناد (=) بعد نوع المُعامل:
func greet(name: String, greeting: String = "Hello") {
print("\(greeting), \(name)!")
}
greet(name: "Alice") // المخرجات: Hello, Alice!
greet(name: "Bob", greeting: "Hi") // المخرجات: Hi, Bob!عند استدعاء الدالة، يمكنك حذف المعلمات التي لها قيم افتراضية. سيستخدم Swift القيمة الافتراضية تلقائيًا. ولكن إذا كنت بحاجة إلى قيمة مختلفة، فلا يزال بإمكانك توفيرها بشكل صريح.
ينبغي وضع المعلمات ذات القيم الافتراضية في نهاية قائمة المعلمات. فهذا يحافظ على نظافة استدعاءات الدوال وسهولة قراءتها:
func calculatePrice(base: Double, taxRate: Double = 0.1) -> Double {
return base + (base * taxRate)
}
print(calculatePrice(base: 100)) // المخرجات: 110.0
print(calculatePrice(base: 100, taxRate: 0.2)) // المخرجات: 120.0تجعل القيم الافتراضية دوالك أكثر مرونة. فهي تعمل ببساطة في الحالات الشائعة، مع السماح بالتخصيص عند الحاجة.
التحدي
سهلاكتب دالة formatGreeting تأخذ name وgreeting وrepeatCount وتُرجع رسالة تحية منسّقة.
يجب أن تستخدم الدالة قيمًا افتراضية للمعاملات الاختيارية:
- يجب أن تكون القيمة الافتراضية لـ
greetingهي"Hello" - يجب أن تكون القيمة الافتراضية لـ
repeatCountهي1
أنشئ سلسلة نصية تكرّر نمط التحية العدد المحدد من المرات، مع الفصل بينها بمسافات.
المعاملات:
name(String): اسم الشخص (مطلوب)greeting(String): كلمة التحية (الافتراضية:"Hello")repeatCount(Int): عدد مرات تكرار التحية (الافتراضي:1)
القيمة المُرجعة: سلسلة نصية تحتوي على نمط التحية مكررًا. التنسيق: "[greeting], [name]!" مكررًا repeatCount من المرات، مع الفصل بينها بمسافة واحدة (String)
على سبيل المثال، إذا كانت قيمة name هي "Alice"، وقيمة greeting هي "Hi"، وقيمة repeatCount هي 2، فستُرجع الدالة "Hi, Alice! Hi, Alice!".
إذا تم استدعاؤها باستخدام name فقط وكانت قيمته "Bob" (باستخدام القيم الافتراضية)، فستُرجع "Hello, Bob!".
جرّب بنفسك
func formatGreeting(name: String, greeting: String, repeatCount: Int) -> String {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)تدرّب بنفسك: Playground لـ Swift