Sobes.tech
Junior — Middle

Как може да се ограничи допустимите типове параметри в генериците вътре в метод?

sobes.tech AI

Отговор от 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")
    }
}

По този начин ограниченията позволяват на компилатора да проверява дали типовете параметри отговарят на зададените изисквания, което увеличава безопасността и предсказуемостта на кода.