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

تأكيد عدم كون القيمة فارغة

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

يتعامل عامل الاستدعاء الآمن وعامل Elvis مع القيم الفارغة بسلاسة، لكنك تكون أحيانًا متأكدًا تمامًا من أن قيمة قابلة لأن تكون فارغة ليست فارغة في نقطة معينة من تعليماتك البرمجية. يتيح لك عامل التأكيد على عدم الفراغ !! أن تخبر Kotlin: "أضمن أن هذه القيمة ليست فارغة."

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // يحول String? إلى String
    println(length)  // يطبع: 5
}

يحوّل العامل !! النوع القابل للقيمة الفارغة إلى نظيره غير القابل للقيمة الفارغة. ومع ذلك، إذا كانت القيمة فارغة فعليًا، فسيتعطّل برنامجك مع حدوث NullPointerException:

fun main() {
    val name: String? = null
    val length = name!!.length  // ينهار هنا!
}

متى تستخدمه: استخدم !! فقط عندما تكون لديك منطق يضمن أن القيمة لا يمكن أن تكون فارغة، لكن المترجم لا يستطيع التحقق من ذلك. في معظم الحالات، فضّل الاستدعاءات الآمنة ?. أو عامل Elvis ?: بدلاً من ذلك. يجب أن يكون تأكيد عدم الفراغ خيارك الأخير، وليس خيارك الأول.

challenge icon

التحدي

سهل

اكتب دالة getUppercaseLength تأخذ مُعاملًا باسم text وتُرجع طول نسخته بأحرف كبيرة.

تستقبل الدالة قيمة نصية غير فارغة، لكن نوع المُعامل قابل لأن يكون فارغًا (String?). استخدم عامل التأكيد على عدم الفراغ !! لتحويله إلى نوع غير قابل للفراغ، ثم اربط طريقة uppercase() واحصل على length.

المُعاملات:

  • text (String?): سلسلة نصية قابلة للفراغ، ويُضمن أن تحتوي على قيمة

القيمة المُعادة: طول النسخة ذات الأحرف الكبيرة من النص (Int)

ملاحظة: في هذا التحدي، ستكون قيمة الإدخال دائمًا سلسلة نصية صالحة، ولن تكون أبدًا null. يحاكي هذا سيناريو تعرف فيه أن القيمة موجودة، لكن المترجم لا يستطيع التحقق من ذلك.

جرّب بنفسك

fun getUppercaseLength(text: String?): Int {
    // اكتب الكود هنا
}
quiz iconاختبر نفسك

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

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

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