Sobes.tech
Junior — Middle

Оё метавонед принсипи истифодаи занҷирҳои даъвати интихобиро дар забонҳои барномасозӣ шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Зу chained-ҳои интихобӣ (optional chaining) як шакли синтаксисӣ аст, ки имкон медиҳад ба таври бехатартар ба хусусиятҳо ё усулҳои дохилии объект дастрасӣ пайдо кунед, ҳатто агар баъзе аз онҳо nil (null) бошанд. Ин хатогиҳои вақти иҷроиро, ки бо кӯшиши дастрасӣ ба хусусияти nil алоқаманданд, пешгирӣ мекунад.

Дар Swift, масалан, агар шумо объекте дошта бошед, ки метавонад nil бошад ва хоҳед, ки ба хусусияти он дастрасӣ пайдо кунед, истифода мебаред ? барои дастрасии бехатартар:

class Person {
    var residence: Residence?
}

class Residence {
    var numberOfRooms = 1
}

let john = Person()
// john.residence метавонад nil бошад

// Бе истифодаи chain-ҳои интихобӣ, барои гирифтани шумораи ҳуҷраҳо, бояд санҷиш гузаронид:
if let roomCount = john.residence?.numberOfRooms {
    print("Шумораи ҳуҷраҳо: \(roomCount)")
} else {
    print("Маълумоти дар бораи манзил дастрас нест")
}

Ин ҷо, john.residence?.numberOfRooms агар residence nil бошад, nil бармегардонад, ва хатогӣ намекунад.

Ин тариқ, chain-ҳои интихобӣ кодро содда мекунад ва ҳангоми кор бо арзишҳои интихобӣ, бехатартар мекунад.