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")
}
}
Бинобар ин, маҳдудиятҳо имкон медиҳанд, ки компилятор санҷад, ки оё намудҳои параметрҳо ба талаботи муайян ҷавобгӯанд, ки ин амният ва пешгӯии кодро зиёд мекунад.