Sobes.tech
Intern

Koja je vaša omiljena funkcija u Swift-u?

sobes.tech АИ

Одговор од АИ

Result је тип избора. Омогућава јасније руковање успешним извршењем или грешком операције, што чини код безбеднијим и разумљивијим.

enum Result<Success, Failure> where Failure : Error {
    case success(Success) // Успешан резултат са асоцираном вредношћу типа Success
    case failure(Failure) // Резултат грешке са асоцираном вредношћу типа Failure
}

Предности коришћења Result:

  • Јасна индикација: Јасно је да функција може вратити или успешну вредност или грешку.
  • Безбедност: Компилатор захтева да се обраде оба случаја (success и failure), спречавајући пропуштање обраде грешака.
  • Боља читљивост: Код који користи Result је лакши за разумевање, јер је намера функције очигледна.
  • Съвместимост: Добро се интегрише са асинхроним операцијама и руковањем грешкама.

Пример употребе:

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)") // Обрада грешке
    }
}