Sobes.tech
Junior — Middle

Jakie funkcje wyższego rzędu używałeś w swoich projektach i możesz podać przykłady ich zastosowania?

sobes.tech AI

Odpowiedź od AI

W rozwoju iOS funkcje wyższego rzędu są często używane do przetwarzania kolekcji i zarządzania asynchronicznością. Na przykład metody map, filter i reduce to funkcje wyższego rzędu, które przyjmują inne funkcje jako argumenty.

Przykład użycia map do przekształcenia tablicy liczb:

let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // [1, 4, 9, 16, 25]

Również, zamknięcia (closures) często są przekazywane do funkcji w celu obsługi zdarzeń lub operacji asynchronicznych:

func fetchData(completion: (Result<String, Error>) -> Void) {
    // Symulacja asynchronicznego ładowania danych
    DispatchQueue.global().async {
        let data = "Dane"
        completion(.success(data))
    }
}

fetchData { result in
    switch result {
    case .success(let data):
        print("Odebrane: \(data)")
    case .failure(let error):
        print("Błąd: \(error)")
    }
}

W ten sposób funkcje wyższego rzędu pozwalają pisać bardziej wyrazisty i zwarty kod.