Sobes.tech
Junior — Middle

Kā ierobežot atļauto parametru tipus ģenerikos iekšpusē metodā?

sobes.tech AI

Atbilde no AI

Swift iekšienē, metodes ģeneriku pieņemto tipu ierobežošanai izmanto ierobežojumu sintaksi, izmantojot protokolus vai klases ar atslēgvārdu where vai mantošanu.

Piemērs, kā ierobežot parametra tipu, kas ir jāatbilst Equatable protokolam:

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

Ja nepieciešams sarežģītāks ierobežojums, var izmantot where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 ir mazāks par item2")
    }
}

Tādējādi ierobežojumi ļauj kompilatoram pārbaudīt, vai parametru tipi atbilst noteiktajām prasībām, kas palielina koda drošību un paredzamību.