Sobes.tech
Junior

O que são genéricos em programação?

sobes.tech IA

Resposta da IA

Os genéricos (Generics) são uma forma de escrever código flexível e reutilizável que funciona com qualquer tipo de dado, mantendo a segurança de tipos. Permitem adiar a especificação de um tipo concreto até ao momento da utilização.

Vantagens principais:

  • Evitar duplicação de código: Pode escrever um algoritmo/estrutura de dados que funcione com diferentes tipos.
  • Segurança de tipos: O compilador verifica a compatibilidade de tipos durante a compilação, prevenindo erros em tempo de execução relacionados com tipos incorretos.
  • Código mais expressivo: Mostra claramente as intenções do programador relativamente aos tipos de dados.

Exemplo de uso em Swift:

Estrutura genérica Stack:

struct Stack<Element> {
    // Elemento genérico usado como tipo dos elementos do array
    private var items: [Element] = []

    // Elemento genérico usado como tipo do parâmetro
    mutating func push(_ item: Element) {
        items.append(item)
    }

    // Elemento genérico usado como tipo do valor de retorno
    mutating func pop() -> Element {
        return items.removeLast()
    }
}

Uso com strings:

var stringStack = Stack<String>()
stringStack.push("hello")
stringStack.push("world")
let lastString = stringStack.pop() // lastString é do tipo String

Uso com números:

var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let lastInt = intStack.pop() // lastInt é do tipo Int

Sem genéricos, teria que escrever estruturas separadas para Stack<String>, Stack<Int>, etc., ou usar abordagens menos seguras (por exemplo, Any).