عامل الدمج مع nil
وفّر قيمة افتراضية عندما تكون القيمة الاختيارية nil.
عامل الدمج مع nil درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
مشكلة nil
قد تحتوي القيمة الاختيارية على قيمة، أو تكون nil. وغالبًا ما تريد استخدام القيمة إن كانت موجودة، أو الرجوع إلى قيمة افتراضية إذا كانت nil.
let typedName: String? = nil
let name = typedName ?? "Guest"
print(name)العامل ??
يأخذ عامل الدمج مع nil ?? قيمة اختيارية على اليسار وقيمة افتراضية على اليمين. إذا لم تكن القيمة الاختيارية nil، فستحصل على قيمتها بعد فك التغليف؛ وإلا فستحصل على القيمة الافتراضية.
let stored: Int? = 42
let value = stored ?? 0
print(value)تُستخدم القيمة الافتراضية عند nil فقط
تُستخدم القيمة الافتراضية في الطرف الأيمن فقط عندما تكون الجهة اليسرى nil. أما القيمة الموجودة، حتى لو كانت 0 أو سلسلة فارغة، فتظل محفوظة.
let count: Int? = 0
let result = count ?? 99
print(result)النتيجة غير اختيارية
ينتج التعبير optional ?? default قيمة غير اختيارية، لأن هناك دائمًا قيمة يُرجع إليها عند الحاجة.
let nickname: String? = nil
let display: String = nickname ?? "Anonymous"
print(display)استبدال if let
من دون ??، ستكتب تعليمة if/else لفك التغليف وتوفير قيمة افتراضية. أما الدمج مع nil فيختصر ذلك كله في تعبير واحد.
let age: Int? = nil
var finalAge: Int
if let unwrapped = age {
finalAge = unwrapped
} else {
finalAge = 18
}
print(finalAge)المنطق نفسه باستخدام ??
إليك المثال السابق بعد إعادة كتابته باستخدام الدمج مع nil. فهو أقصر، وهدفه واضح مباشرةً.
let age: Int? = nil
let finalAge = age ?? 18
print(finalAge)الدمج داخل الاستيفاء
يمكنك وضع ?? مباشرةً داخل استيفاء السلسلة النصية لطباعة قيمة بديلة مناسبة.
let city: String? = nil
print("City: \(city ?? "Unknown")")من التحويلات القابلة للفشل
يعيد تحويل String إلى Int قيمة اختيارية. ويوفر الدمج مع nil قيمة افتراضية عندما لا يكون النص رقمًا.
let text = "abc"
let number = Int(text) ?? -1
print(number)الدمج مع القواميس
يعيد البحث عن مفتاح في قاموس قيمة اختيارية. استخدم ?? لتوفير قيمة بديلة عند غياب المفتاح.
let scores = ["Ann": 90]
let bob = scores["Bob"] ?? 0
print(bob)يمكن حساب القيمة الافتراضية
يمكن أن يكون الطرف الأيمن أي تعبير من النوع الصحيح، حتى استدعاء دالة. ولا يُقيَّم هذا التعبير إلا عند الحاجة.
func defaultName() -> String {
return "Player1"
}
let entered: String? = nil
print(entered ?? defaultName())يجب توافق النوع
يجب أن تكون القيمة الافتراضية متوافقة مع النوع الذي تغلفه القيمة الاختيارية. فالقيمة Int? تحتاج إلى قيمة افتراضية من النوع Int.
let maybe: Int? = nil
let safe = maybe ?? 100
print(safe + 1)تحقق سريع
اختبر الدمج مع nil.
مراجعة: عامل الدمج مع nil
يفك العامل ?? تغليف قيمة اختيارية أو يرجع إلى قيمة افتراضية، وينتج قيمة غير اختيارية. ولا تُستخدم القيمة الافتراضية إلا عندما تكون القيمة الاختيارية nil.
let input: String? = nil
let name = input ?? "Default"
print(name)الأسئلة الشائعة
هل درس «عامل الدمج مع nil» مجاني؟
نعم — نص درس «عامل الدمج مع nil» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «عامل الدمج مع nil»؟
وفّر قيمة افتراضية عندما تكون القيمة الاختيارية nil. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «عامل الدمج مع nil»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عامل الدمج مع nil
- تسلسل القيم الافتراضية
- القيم الافتراضية لمعلمات الدوال
- الفهارس الفرعية الافتراضية للقواميس