Sobes.tech
Junior

Kotlin'da 'nullable' turlar nima va ular qanday ishlaydi?

sobes.tech AI

AIdan javob

Kotlin'da nullable turlar, qiymat yoki null bo'lishi mumkin bo'lgan turlar hisoblanadi. Ular, tur nomidan keyin ? belgi bilan aniq ko'rsatiladi.

Ularning ishlash prinsipi, Kotlinning tur tizimiga asoslangan bo'lib, bu tizim, NullPointerException xatosini kompilyatsiya vaqtida oldini oladi. Kompilyator, nullable turdagi ob'ektning a'zolariga murojaat qilishdan oldin, aniq null tekshiruvini talab qiladi.

Nullable turlar bilan xavfsiz ishlashning asosiy usullari:

  • null tekshiruvi if yordamida:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Null tekshiruvdan so'ng xavfsiz chaqiruv
        } else {
            println("String null")
        }
    }
    
  • Xavfsiz chaqirish operatori (?.): Ob'ekt null bo'lsa, null qaytaradi, aks holda chaqiruv natijasini.

    val safeLength: Int? = str?.length // Agar str null bo'lsa, safeLength null bo'ladi
    
  • Elvis operatori (?:): Operator chap tomonidagi ifoda null bo'lsa, standart qiymatni taqdim etadi.

    val lengthOrDefault: Int = str?.length ?: 0 // Agar str null bo'lsa, lengthOrDefault 0 bo'ladi
    
  • Aniq null bo'lmagan tasdiqlash operatori (!!): Nullable turini null bo'lmagan turga aylantiradi. E'tibor bilan ishlatilishi kerak, chunki qiymat null bo'lsa, NullPointerException chiqaradi.

    val assertedLength: Int = str!!.length // Agar str null bo'lsa, NPE chiqaradi
    
  • let/run/apply/also funksiyalari va xavfsiz chaqiruv:

    str?.let {
        // Kod faqat str null bo'lmaganida bajariladi
        println("Qator uzunligi: ${it.length}")
    }
    

Kotlinning nullable turlar tizimi, xavfsizlikni sezilarli darajada oshiradi va null ning har qanday turga aniq belgilamasdan tayinlanishi mumkin bo'lgan tillarga nisbatan NullPointerException ehtimolini kamaytiradi.