Sobes.tech
Junior — Middle

Jak lze omezit povolené typy parametrů v generikách uvnitř metody?

sobes.tech AI

Odpověď od AI

Ve Swiftu se syntaxe pro omezení povolených typů parametrů v generikách uvnitř metody používá omezení pomocí protokolů nebo tříd přes klíčové slovo where nebo určení dědičnosti.

Příklad omezení typu parametru, který musí splňovat protokol 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
}

Pokud je potřeba složitější omezení, lze použít where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 je menší než item2")
    }
}

Tímto způsobem umožňují omezení, aby překladač ověřil, že typy parametrů splňují stanovené požadavky, což zvyšuje bezpečnost a předvídatelnost kódu.