Menu
CoddyTech

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

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

عندما يكون لديك متغير قابل لأن تكون قيمته فارغة، لا يمكنك استدعاء الأساليب أو الوصول إلى الخصائص عليه مباشرةً: لن يسمح المترجم بذلك لأن القيمة قد تكون فارغة. يحل عامل الاستدعاء الآمن ?. هذه المشكلة بأناقة.

بدلاً من استخدام نقطة عادية .، استخدم ?. للوصول بأمان إلى أعضاء نوع قابل للقيمة الفارغة:

fun main() {
    val name: String? = "Alice"
    val length = name?.length  // تُرجع 5
    println(length)
    
    val nullName: String? = null
    val nullLength = nullName?.length  // تُرجع null (دون تعطل!)
    println(nullLength)
}

يتحقق عامل الاستدعاء الآمن مما إذا كانت القيمة null قبل الوصول إلى الخاصية أو الطريقة. إذا كانت القيمة null، فسيُرجع التعبير بالكامل null بدلًا من أن يتعطل. وإذا كانت القيمة موجودة، فسيعمل تمامًا مثل الاستدعاء العادي.

يمكنك أيضًا ربط عدة استدعاءات آمنة معًا:

fun main() {
    val text: String? = "Hello"
    val result = text?.uppercase()?.length
    println(result)  // يطبع: 5
}

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

challenge icon

التحدي

سهل

تم تزويدك بالمتغير القابل لأن تكون قيمته فارغة التالي:

val message: String? = "Kotlin"

استخدم معامل الاستدعاء الآمن من أجل:

  1. الحصول على طول message وطباعته
  2. تحويل message إلى أحرف كبيرة وطباعة النتيجة

بعد ذلك، أنشئ متغيرًا آخر قابلًا لأن تكون قيمته فارغة:

val empty: String? = null

استخدم معامل الاستدعاء الآمن للحصول على طول empty وطباعته.

يجب طباعة كل نتيجة في سطر منفصل. تذكّر: يعيد معامل الاستدعاء الآمن null عندما تكون القيمة null.

جرّب بنفسك

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: استخدم عامل الاستدعاء الآمن للحصول على طول message وطباعته
    
    // TODO: استخدم عامل الاستدعاء الآمن لتحويل message إلى أحرف كبيرة وطباعتها
    
    val empty: String? = null
    
    // TODO: استخدم عامل الاستدعاء الآمن للحصول على طول empty وطباعته
}
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ Kotlin