0Pricing
Kotlin Academy · درس

الاستدعاءات الآمنة وElvis

المعاملان ?. و?:

الاستدعاءات الآمنة وElvis درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

التعامل السلس مع القيم القابلة للخلو

قد تصبح كتابة if (x != null) في كل موضع مطوّلة. توفّر Kotlin عاملين موجزين للقيم القابلة للخلو:

  • الاستدعاء الآمن ?.
  • عامل Elvis ?:

عامل الاستدعاء الآمن

يستدعي الاستدعاء الآمن ?. دالةً أو يقرأ خاصيةً فقط إذا لم تكن القيمة null. وإلا فتُقيَّم العبارة بأكملها إلى null.

لا يحدث تعطل ولا حاجة إلى تحقق صريح.

fun main() {
    val name: String? = "Kotlin"
    println(name?.length)
}

الاستدعاء الآمن مع null

عندما تكون القيمة المستقبِلة null، يتوقف الاستدعاء الآمن عن المتابعة ويعيد null بدلًا من إلقاء استثناء.

وهذا هو الفرق الأساسي عن استدعاء النقطة العادي.

fun main() {
    val name: String? = null
    println(name?.length)
}

تسلسل الاستدعاءات الآمنة

يمكن تسلسل الاستدعاءات الآمنة. إذا كانت أي حلقة في السلسلة null، تصبح النتيجة بأكملها null.

يؤدي ذلك إلى تجنّب عمليات التحقق المتداخلة بعمق من null.

fun main() {
    val text: String? = "hello world"
    val result = text?.uppercase()?.substring(0, 5)
    println(result)
}

عامل Elvis

يوفّر عامل Elvis ?: قيمةً بديلة عندما يكون الجانب الأيسر null.

يمكنك قراءته هكذا: استخدم القيمة اليسرى، وإلا فاستخدم القيمة اليمنى.

fun main() {
    val name: String? = null
    val display = name ?: "Guest"
    println(display)
}

عامل Elvis مع قيمة فعلية

إذا لم يكن الجانب الأيسر null، يعيده عامل Elvis ببساطة ويتجاهل القيمة البديلة.

ولا تُستخدم القيمة البديلة إلا عندما تكون القيمة مفقودة.

fun main() {
    val name: String? = "Sam"
    val display = name ?: "Guest"
    println(display)
}

دمج الاستدعاء الآمن وعامل Elvis

غالبًا ما يُستخدم هذان العاملان معًا. فقد ينتج الاستدعاء الآمن null، ويوفّر عامل Elvis قيمة افتراضية.

وهذا من أكثر أنماط Kotlin شيوعًا.

fun main() {
    val name: String? = null
    val length = name?.length ?: 0
    println(length)
}

استخدام Elvis للعودة المبكرة

يمكن أن يكون الجانب الأيمن من عامل Elvis هو return أو throw. وهذه طريقة واضحة للخروج مبكرًا عند فقدان قيمة.

إذا كانت قيمة id هي null، تعود الدالة فورًا.

fun process(id: String?) {
    val safeId = id ?: return
    println("Processing " + safeId)
}

fun main() {
    process("A-100")
    process(null)
    println("done")
}

الاستدعاء الآمن مع let

ادمج ?. مع let لتشغيل كتلة فقط عندما لا تكون القيمة null.

داخل الكتلة، تشير it إلى القيمة غير القابلة للخلو.

fun main() {
    val name: String? = "Kotlin"
    name?.let {
        println("Length is " + it.length)
    }
}

القيم الافتراضية للأعداد باستخدام Elvis

يُعد عامل Elvis مفيدًا لتحويل الأعداد القابلة للخلو إلى قيم افتراضية آمنة قبل إجراء العمليات الحسابية.

هنا يتحول العدد null إلى 0، ولذلك تنجح العمليات الحسابية دائمًا.

fun main() {
    val count: Int? = null
    val total = (count ?: 0) + 5
    println(total)
}

جمع المفاهيم

تستبدل هذه العوامل معًا عمليات التحقق المطوّلة من null:

  • يستدعي ?. فقط عندما لا تكون القيمة null
  • يوفّر ?: قيمة بديلة عندما تكون القيمة null
  • يجعل التسلسل وlet التدفقات المعقدة موجزة
fun main() {
    val input: String? = null
    val name = input?.trim()?.uppercase() ?: "UNKNOWN"
    println(name)
}

اختبار سريع

اختبر مدى فهمك للاستدعاءات الآمنة ومعامل Elvis.

مراجعة

لقد تعلّمت معاملي nullable الأساسيين:

  • الاستدعاء الآمن ?. يعيد null بدلًا من التسبب في انهيار البرنامج
  • Elvis ?: يوفّر قيمة بديلة
  • يتكاملان بسلاسة مع let وعمليات الإرجاع المبكر

سترى بعد ذلك معامل !! وسبب وجوب استخدامه بحذر.

الأسئلة الشائعة

هل درس «الاستدعاءات الآمنة وElvis» مجاني؟

نعم — نص درس «الاستدعاءات الآمنة وElvis» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «الاستدعاءات الآمنة وElvis»؟

المعاملان ?. و?: تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الاستدعاءات الآمنة وElvis»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الأنواع Nullable وNon-Null
  2. الاستدعاءات الآمنة وElvis
  3. المعامل !!
  4. أنواع المنصة
← العودة إلى Kotlin Academy