Sobes.tech
Junior — Middle

Hogyan lehet korlátozni a metóduson belüli generikus típusok megengedett típusait?

sobes.tech MI

Válasz az MI-től

Swift-ben a metódusokon belüli generikus típusok megengedett típusainak korlátozására a protokollok vagy osztályok szerinti korlátozási szintaxist használják a where kulcsszóval vagy öröklődés megadásával.

Példa arra, hogyan lehet korlátozni egy paraméter típusát, amelynek meg kell felelnie az Equatable protokollnak:

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

Ha összetettebb korlátozás szükséges, használható a where:

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

Így a korlátozások lehetővé teszik a fordítónak, hogy ellenőrizze, hogy a paraméter típusai megfelelnek-e a megadott követelményeknek, növelve a kód biztonságát és kiszámíthatóságát.