Sobes.tech
Junior

Kotlinдеги 'nullable' түрлөрү эмне жана алар кандай иштейт?

sobes.tech AI

AIден жооп

Kotlinдеги Nullable типтери - бул мааниси бар жана null болушу мүмкүн болгон типтер. Алар тип аталышынан кийинки ? символу менен так белгиленет.

Иштөө Kotlinдин тип системасына негизделген, ал NullPointerException коду түзүлүшүндө алдын алууга жардам берет. Компилятор nullable типтин мүчөлөрүнө кайрыларда null текшерүүнү талап кылат.

Nullable типтер менен иштөөдө негизги ыкмалар:

  • null текшерүү if менен:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // null текшерүүдөн кийин коопсуз чакыруу
        } else {
            println("Строка null")
        }
    }
    
  • Коопсуз чакыруу оператору (?.): Объект null болсо, null кайтарат, эгер жок болсо, чакыруу натыйжасын кайтарат.

    val safeLength: Int? = str?.length // Эгер str null болсо, safeLength `null` болот
    
  • Элвис оператору (?:): Сол жактагы өрнөк null болсо, алдын ала белгиленген маанини берет.

    val lengthOrDefault: Int = str?.length ?: 0 // Эгер str null болсо, lengthOrDefault 0 болот
    
  • Ачык эмес null деп ырастоо оператору (!!): Nullable типти не-nullable кылат. Көңүл буруңуз, эгер мааниси null болсо, NullPointerException чыгарат.

    val assertedLength: Int = str!!.length // Эгер str null болсо, NPE чыгарат
    
  • let/run/apply/also функциялары жана коопсуз чакыруу:

    str?.let {
        // Код `str` null эмес болсо гана иштейт
        println("Строканын узундугу: ${it.length}")
    }
    

Kotlinдеги nullable тип системасы коопсуздукту жогорулатат жана NullPointerException пайда болуу мүмкүнчүлүгүн азайтат, башка тилдерге салыштырмалуу, анда null ар кандай типке так белгисиздиксиз берилиши мүмкүн.