Sobes.tech
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)") // Идоракунии хато
    }
}