Таврҳои 'nullable' дар Kotlin чистанд ва чӣ гуна кор мекунанд?
sobes.tech AI
Ҷавоб аз AI
Кодҳои nullable дар Kotlin навъҳое мебошанд, ки метавонанд ҳам арзиш ва ҳам 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-ро ба навъи нон-null табдил медиҳад. Бо эҳтиёт истифода баред, зеро агар арзишnullбошад,NullPointerExceptionмеандозад.val assertedLength: Int = str!!.length // Агар str null бошад, NPE меандозад -
Функсияҳои let/run/apply/also бо даъвати бехатар:
str?.let { // Код танҳо агар str null набошад, иҷро мешавад println("Дарозии сатр: ${it.length}") }
Системаи навъҳои nullable дар Kotlin ба таври назаррас бехатариро баланд мебардорад ва эҳтимолияти пайдоиши NullPointerException-ро дар муқоиса бо забонҳое, ки дар онҳо null метавонад ба ҳар навъ бе ишораи равшан таъин карда шавад, кам мекунад.