Sobes.tech
Junior — Middle

Kaip galima apriboti leistinų parametrų tipus generikuose metodo viduje?

sobes.tech AI

Atsakymas iš AI

Swift'e, metodų viduje generikų leidžiamų tipų apribojimui naudojama apribojimų sintaksė per protokolus arba klases naudojant raktinę žodį where arba paveldėjimą.

Pavyzdys, kaip apriboti parametro tipą, kuris turi atitikti Equatable protokolą:

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

Jei reikia sudėtingesnio apribojimo, galima naudoti where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 yra mažesnis nei item2")
    }
}

Taip apribojimai leidžia kompiliatoriui patikrinti, ar parametrų tipai atitinka nustatytus reikalavimus, kas didina kodo saugumą ir prognozuojamumą.