Sobes.tech
Back to questions
Junior — Middle
69

Каким образом можно ограничить допустимые типы параметров в дженериках внутри метода?

Companies where asked
iviivi

Answer from AI

sobes.tech AI

В Swift для ограничения допустимых типов параметров в дженериках внутри метода используется синтаксис ограничения протоколами или классами через ключевое слово where или указание наследования.

Пример ограничения типа параметра, который должен соответствовать протоколу 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
}

Если нужно более сложное ограничение, можно использовать where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 меньше item2")
    }
}

Таким образом, ограничения позволяют компилятору проверять, что типы параметров соответствуют заданным требованиям, что повышает безопасность и предсказуемость кода.