Sobes.tech
Junior — Middle

Como é que se podem restringir os tipos permitidos de parâmetros em genéricos dentro de um método?

sobes.tech IA

Resposta da IA

No Swift, para restringir os tipos permitidos de parâmetros em genéricos dentro de um método, utiliza-se a sintaxe de restrição por protocolos ou classes através da palavra-chave where ou indicando herança.

Exemplo de restrição do tipo de parâmetro que deve cumprir o protocolo 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 for necessária uma restrição mais complexa, pode-se usar where:

func compareItems<T, U>(item1: T, item2: U) where T: Comparable, T == U {
    if item1 < item2 {
        print("item1 é menor que item2")
    }
}

Dessa forma, as restrições permitem que o compilador verifique se os tipos dos parâmetros atendem aos requisitos estabelecidos, aumentando a segurança e a previsibilidade do código.