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