Menu
Coddy logo textTech

אופרטור קריאה בטוחה

חלק מהיחידה יסודות במסלול ה-Kotlin של Coddy. שיעור 14 מתוך 93.

כשיש לך משתנה שניתן להיות null, אי אפשר לקרוא ישירות למתודות שלו או לגשת למאפיינים שלו: המהדר לא יאפשר זאת כי הערך עשוי להיות null. אופרטור הקריאה הבטוחה ?. פותר את הבעיה הזאת באלגנטיות.

במקום להשתמש בנקודה רגילה ., משתמשים ב-?. כדי לגשת בבטחה לחברים מסוג שניתן להיות null:

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

אתגר

קל

ניתן לך המשתנה הבא שיכול להיות null:

val message: String? = "Kotlin"

השתמש באופרטור קריאה בטוחה כדי:

  1. לקבל את האורך של message ולהדפיס אותו
  2. להמיר את message לאותיות רישיות ולהדפיס את התוצאה

לאחר מכן, צור משתנה נוסף שיכול להיות null:

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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Kotlin אונליין