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.