Sobes.tech
Junior

Чӣ гуна бояд арзишҳои null-ро дар код санҷид?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin истифода мешаванд роҳҳои зерин барои кор бо навъҳои nullable ва санҷиши null:

  1. Оператори бехатарии даъват (?.): Имкон медиҳад, ки методҳо ё ба хусусиятҳои объект танҳо дар ҳолате даъват шаванд, ки объект null набошад. Агар объект null бошад, тамоми даъват null бармегардонад.

  2. Оператори Элвис (?:): Имкон медиҳад, ки арзиши пешфарзро таъмин кунад, агар изрази чапи оператор null бошад.

  3. Оператори даъвати бехатар (!!): Навъи nullable-ро ба non-nullable табдил медиҳад. Агар арзиш null бошад, хатогии NullPointerException бармеангезад. Истифодаи дар шадид тавсия намешавад, зеро метавонад ба суст шудани барнома оварда расонад.

  4. Блоки 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 аст
}