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

معامل دمج Nil

جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 14 من 86.

أحياناً تريد فقط توفير قيمة افتراضية عندما يكون الاختياري (optional) هو nil، دون كتابة عدة أسطر من الكود. يقوم عامل دمج القيم الفارغة (nil coalescing operator) في Swift (??) بذلك تماماً — فهو يقوم بفك تغليف الاختياري إذا كان يحتوي على قيمة، أو يعيد قيمة افتراضية إذا كان nil.

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

بما أن nickname هو nil، فإن العامل يرجع "Guest" بدلاً من ذلك. إذا كانت هناك قيمة لـ nickname، فسيتم استخدام تلك القيمة.

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

يعد عامل دمج القيم الفارغة (nil coalescing operator) مثالياً للأسطر البرمجية المفردة التي تحتاج فيها إلى قيمة احتياطية. إنه أكثر بساطة من كتابة عبارة if let عندما تريد ببساطة استبدال nil بقيمة افتراضية. النتيجة دائماً ما تكون قيمة غير اختيارية، لذا يمكنك استخدامها مباشرة دون الحاجة إلى مزيد من فك التغليف (unwrapping).

challenge icon

التحدي

سهل

اكتب دالة getDisplayName تأخذ username اختيارياً و defaultName، ثم تعيد اسم العرض المناسب باستخدام عامل دمج القيم الفارغة (nil coalescing operator).

إذا كان اسم المستخدم فارغاً (يتم تمثيله بسلسلة نصية فارغة "")، فقم بمعاملته كـ nil وأعد الاسم الافتراضي. بخلاف ذلك، أعد اسم المستخدم.

المعاملات:

  • username (String): اسم المستخدم (السلسلة النصية الفارغة تمثل nil)
  • defaultName (String): الاسم الاحتياطي المراد استخدامه

القيمة المرجعة: اسم المستخدم إذا لم يكن فارغاً، وإلا defaultName.

تلميح: قم بتحويل اسم المستخدم إلى قيمة اختيارية (optional) داخل الدالة الخاصة بك — إذا كان فارغاً، اجعله nil. ثم استخدم ?? لتوفير القيمة الاحتياطية.

ورقة مرجعية

يقوم عامل دمج القيم الفارغة (nil coalescing operator) (??) بفك تغليف الاختياري (optional) إذا كان يحتوي على قيمة، أو إرجاع قيمة افتراضية إذا كان nil:

let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // Guest

إذا كان الاختياري (optional) يحتوي على قيمة، يتم استخدام تلك القيمة بدلاً من ذلك:

let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoder

النتيجة دائماً ما تكون قيمة غير اختيارية (non-optional)، مما يجعله أكثر بساطة من if let في حالات القيم البديلة البسيطة.

جرّب بنفسك

func getDisplayName(username: String, defaultName: String) -> String {
    // اكتب الكود هنا
}
quiz iconاختبر نفسك

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

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