Sobes.tech
Junior — Middle

Jak można ograniczyć dozwolone typy parametrów w generykach wewnątrz metody?

sobes.tech AI

Odpowiedź od AI

W Swift, aby ograniczyć dozwolone typy parametrów w generykach wewnątrz metody, używa się składni ograniczeń przez protokoły lub klasy za pomocą słowa kluczowego where lub wskazania dziedziczenia.

Przykład ograniczenia typu parametru, który musi spełniać protokół Equatable:

func findIndex<T: Equatable>(of valueToFind: T, in array: [T]) -> Int? {
    for (index, value) in array.enumerated() {
        if value == valueToFind {
            return index
        }
    }
    return nil
}

Jeśli potrzebne jest bardziej skomplikowane ograniczenie, można użyć where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 jest mniejsze od item2")
    }
}

W ten sposób ograniczenia pozwalają kompilatorowi sprawdzać, czy typy parametrów spełniają określone wymagania, co zwiększa bezpieczeństwo i przewidywalność kodu.