Sobes.tech
Junior

Qual princípio de programação permite usar genéricos?

sobes.tech IA

Resposta da IA

Polimorfismo de subtipos.

Os genéricos em Swift implementam o polimorfismo paramétrico, permitindo escrever código que pode trabalhar com diferentes tipos sem os conhecer de antemão, mas exigindo que esses tipos cumpram certas restrições (por exemplo, protocolos).

Exemplo de uso de genéricos:

// Definição de uma função genérica que aceita dois parâmetros do mesmo tipo T,
// onde o tipo T deve cumprir o protocolo Equatable.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
    return a == b
}

// Uso de função genérica com Int
let intResult = areEqual(5, 5) // true

// Uso de função genérica com String
let stringResult = areEqual("hello", "world") // false

Exemplo de estrutura genérica (pilha):

// Definição de uma estrutura genérica "Stack", que pode armazenar elementos de qualquer tipo T.
struct Stack<T> {
    private var elements: [T] = []

    mutating func push(_ element: T) {
        elements.append(element)
    }

    mutating func pop() -> T? {
        return elements.popLast()
    }
}

// Uso de estrutura genérica com Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2

// Uso de estrutura genérica com String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"

Vantagens do uso de genéricos:

  • Segurança de tipos: O compilador verifica os tipos durante a compilação, reduzindo a probabilidade de erros em tempo de execução.
  • Reutilização de código: O mesmo código pode trabalhar com diferentes tipos.
  • Desempenho: Não há necessidade de conversões de tipos em tempo de execução.
  • Abstração: Permitem abstrair-se de tipos de dados específicos.