القيم الافتراضية
جزء من قسم الأساسيات في رحلة 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 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جرّب بنفسك
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)