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")
    }
}

Бинобар ин, маҳдудиятҳо имкон медиҳанд, ки компилятор санҷад, ки оё намудҳои параметрҳо ба талаботи муайян ҷавобгӯанд, ки ин амният ва пешгӯии кодро зиёд мекунад.