Чӣ гуна бояд арзишҳои null-ро дар код санҷид?
sobes.tech AI
Ҷавоб аз AI
Дар Kotlin истифода мешаванд роҳҳои зерин барои кор бо навъҳои nullable ва санҷиши null:
-
Оператори бехатарии даъват (
?.): Имкон медиҳад, ки методҳо ё ба хусусиятҳои объект танҳо дар ҳолате даъват шаванд, ки объектnullнабошад. Агар объектnullбошад, тамоми даъватnullбармегардонад. -
Оператори Элвис (
?:): Имкон медиҳад, ки арзиши пешфарзро таъмин кунад, агар изрази чапи операторnullбошад. -
Оператори даъвати бехатар (
!!): Навъи nullable-ро ба non-nullable табдил медиҳад. Агар арзишnullбошад, хатогииNullPointerExceptionбармеангезад. Истифодаи дар шадид тавсия намешавад, зеро метавонад ба суст шудани барнома оварда расонад. -
Блоки
ifбо санҷишиnull: Равиши анъанавӣ барои санҷиш, ки аксар вақт дар ҳамоҳангӣ бо smart cast-ҳои Kotlin истифода мешавад.
// Оператори бехатарии даъват ?.
val length = text?.length
// Smart cast пас аз санҷиши `null`
if (text != null) {
val length = text.length // text автоматӣ ба String (non-nullable) табдил ёфтааст
}
// Оператори Элвис ?:
val nonNullText = text ?: "Тексти пешфарз"
// Оператори даъвати бехатар !! (аз он дурӣ ҷӯед, агар имконпазир бошад)
val forceLength = text!!.length // Мумкин аст, ки NullPointerException барорад
Дар Java, санҷиши null танҳо бо истифода аз шартҳои if иҷро мешавад:
// Java
if (text != null) {
int length = text.length();
} else {
// Ҳалли ҳолат, вақте ки text null аст
}