Intern
Функсияи дӯстдоштаи шумо дар Swift чист?
sobes.tech AI
Ҷавоб аз AI
Result — тип enumeration. Он имкон медиҳад, ки ба таври равшантар муомила бо иҷрои муваффақона ё хато кардани амалиёт, ки коди бештар бехатар ва фаҳмонда мешавад.
enum Result<Success, Failure> where Failure : Error {
case success(Success) // Натиҷаи муваффақ бо арзиши ҳамроҳшудаи навъи Success
case failure(Failure) // Натиҷаи хато бо арзиши ҳамроҳшудаи навъи Failure
}
Афзалиятҳои истифодаи Result:
- Нишондиҳандаи равшан: Мушаххас аст, ки функсия метавонад ё арзиши муваффақ ё хато баргардонад.
- Бехатарӣ: Компилятор маҷбур мекунад, ки ҳарду ҳолат (
successваfailure) баррасӣ шаванд, ки пешгирӣ аз нодида гирифтани хатоҳо. - Беҳтар фаҳмондашавӣ: Коди истифодаи
Resultосонтар фаҳмида мешавад, зеро нияти функсия равшан аст. - Муттаҳидшавӣ: Беҳ integration бо амалиётҳои асинхронӣ ва идоракунии хатоҳо.
Маслиҳат барои истифода:
func fetchData(from url: URL, completion: @escaping (Result<Data, Error>) -> Void) {
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
completion(.failure(error)) // Идоракунии хато тавассути failure
return
}
if let data = data {
completion(.success(data)) // Идоракунии маълумот тавассути success
return
}
// Идоракунии сенарияҳои ғайр интизор, агар лозим бошад
}.resume()
}
// Истифодаи функсия
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
switch result {
case .success(let data):
print("Маълумот гирифта шуд: \(data)") // Идоракунии муваффақият
case .failure(let error):
print("Хатои дар гирифтани маълумот: \(error.localizedDescription)") // Идоракунии хато
}
}