Sobes.tech
Junior — Middle

Come si possono limitare i tipi di parametri consentiti nei generici all'interno di un metodo?

sobes.tech AI

Risposta dell'AI

In Swift, per limitare i tipi consentiti dei parametri nei generici all’interno di un metodo, si utilizza la sintassi di restrizione tramite protocolli o classi tramite la parola chiave where o indicando l’ereditarietà.

Esempio di restrizione del tipo di parametro che deve conformarsi al protocollo 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
}

Se è necessaria una restrizione più complessa, si può usare where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 è minore di item2")
    }
}

In questo modo, le restrizioni permettono al compilatore di verificare che i tipi dei parametri rispettino i requisiti stabiliti, aumentando la sicurezza e la prevedibilità del codice.