Sobes.tech
Junior

Kotlin-də 'nullable' tiplər nədir və necə işləyirlər?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də nullable tiplər, həm dəyər, həm də null saxlaya bilən tiplərdir. Onlar, tip adından sonra ? simvolu ilə açıq şəkildə göstərilir.

İş prinsipi, Kotlin-in tip sisteminə əsaslanır və bu sistem, NullPointerException-u kompilyasiya zamanı qarşısını alır. Kompilyator, nullable tipli obyektin üzvlərinə müraciət etməzdən əvvəl açıq şəkildə null yoxlaması tələb edir.

Nullable tiplərlə təhlükəsiz işləmək üçün əsas yollar:

  • null yoxlaması if ilə:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Null yoxlamasından sonra təhlükəsiz çağırış
        } else {
            println("String null")
        }
    }
    
  • Təhlükəsiz çağırış operatoru (?.): Əgər obyekt null-dırsa, null qaytarır, əks halda çağırışın nəticəsini.

    val safeLength: Int? = str?.length // Əgər str null-dursa, safeLength null olacaq
    
  • Elvis operatoru (?:): Sol tərəfdəki ifadə null-dırsa, standart dəyər təqdim edir.

    val lengthOrDefault: Int = str?.length ?: 0 // Əgər str null-dursa, lengthOrDefault 0 olacaq
    
  • Açıq null olmayan təsdiq operatoru (!!): Nullable tipi null olmayan tipe çevirir. Diqqətlə istifadə edilməlidir, çünki dəyər null-dırsa, NullPointerException atacaq.

    val assertedLength: Int = str!!.length // Əgər str null-dursa, NPE atacaq
    
  • let/run/apply/also funksiyaları və təhlükəsiz çağırış:

    str?.let {
        // Kod yalnız `str` null olmadıqda icra olunacaq
        println("String uzunluğu: ${it.length}")
    }
    

Kotlin-in nullable tiplər sistemi, təhlükəsizliyi əhəmiyyətli dərəcədə artırır və null-ın hər hansı bir tipe açıq şəkildə təyin edilmədən təyin oluna bilməsi ilə əlaqəli NullPointerException ehtimalını azaldır.