تأكيد عدم كون القيمة فارغة
جزء من قسم الأساسيات في رحلة 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 ?: بدلاً من ذلك. يجب أن يكون تأكيد عدم الفراغ خيارك الأخير، وليس خيارك الأول.
التحدي
سهلاكتب دالة getUppercaseLength تأخذ مُعاملًا باسم text وتُرجع طول نسخته بأحرف كبيرة.
تستقبل الدالة قيمة نصية غير فارغة، لكن نوع المُعامل قابل لأن يكون فارغًا (String?). استخدم عامل التأكيد على عدم الفراغ !! لتحويله إلى نوع غير قابل للفراغ، ثم اربط طريقة uppercase() واحصل على length.
المُعاملات:
text(String?): سلسلة نصية قابلة للفراغ، ويُضمن أن تحتوي على قيمة
القيمة المُعادة: طول النسخة ذات الأحرف الكبيرة من النص (Int)
ملاحظة: في هذا التحدي، ستكون قيمة الإدخال دائمًا سلسلة نصية صالحة، ولن تكون أبدًا
null. يحاكي هذا سيناريو تعرف فيه أن القيمة موجودة، لكن المترجم لا يستطيع التحقق من ذلك.
جرّب بنفسك
fun getUppercaseLength(text: String?): Int {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل - الجزء الأول
العوامل الحسابيةعامل باقي القسمةالإسناد المُعزَّزعوامل المقارنةمراجعة - الرياضيات البسيطة7أساسيات الإدخال والإخراج
دالة Printlnقوالب السلاسل النصيةإدخال ReadLineتحويل النوعمراجعة - السنوات حتى التقاعدمراجعة - صواب أم خطأ10الدوال
تعريف دالةالمعاملات والوسائطالقيم المُعادةالوسائط المُسمّاةالقيم الافتراضيةالدوال ذات التعبير الواحدمراجعة - دالة سيغمامراجعة - دالة التحقق2المتغيرات
val مقابل varاستنتاج النوعالأعدادالسلسلة النصيةالقيمة المنطقيةاصطلاحات التسميةمراجعة - تهيئة المتغيرات5المعاملات الجزء 2
المعاملات المنطقية الجزء 1المعاملات المنطقية الجزء 2المعاملات المنطقية الجزء 3المعامل الثلاثي مع تعبير Ifمراجعة - المنطق البسيط8حاسبة تقسيم الفاتورة
رسالة ترحيبيةالحصول على الإدخال3القابلية للقيمة الفارغة
ما هو الأمان من القيم الفارغةالأنواع القابلة للقيمة الفارغةعامل الاستدعاء الآمنعامل Elvisأساسيات تحدي الدوالتأكيد عدم كون القيمة فارغةمراجعة - الوصول الآمن9الحلقات
حلقة Forحلقة Whileحلقة Do-WhileBreakContinueالنطاقات في الحلقاتالحلقة المتداخلةمراجعة - المضروبمراجعة - الإدخال الديناميكيتدرّب بنفسك: Playground لـ Kotlin