Τι είναι οι τύποι 'nullable' στο Kotlin και πώς λειτουργούν;
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("String null") } } -
Хавфсиз чақириш оператори (
?.): Агар объектnullбўлса,nullқайтариб, акс ҳолда чақириш натижасини қайтариб беради.val safeLength: Int? = str?.length // Агар str null бўлса, safeLength null бўлади -
Elvis оператори (
?:): Агар олги ифодаnullбўлса, стандарт қийматни таъминлайди.val lengthOrDefault: Int = str?.length ?: 0 // Агар str null бўлса, lengthOrDefault 0 бўлади -
Аниқ null эмаслигини тасдиқловчи оператор (
!!): Nullable турни null эмас турга айлантиради. Эҳтиёт бўлиш керак, чунки агар қийматnullбўлса,NullPointerExceptionюзага келтиради.val assertedLength: Int = str!!.length // Агар str null бўлса, NPE юзага келтиради -
let/run/apply/alsoфункциялари ва хавфсиз чақириш:str?.let { // Код фақат `str` null эмас бўлганда ишга тушади println("Қатор узунлиги: ${it.length}") }
Kotlin-да nullable типлар тизими, хавфсизликни сезиларли даражада оширади ва null-нинг ҳар қандай турга аниқ белгиланмасдан тайинланишига йўл қўймайди, бу эса NullPointerException эҳтимолини камайтиради.