Menu
Coddy logo textTech

O Problema que Generics Resolvem

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 57 de 73.

Imagine que você precisa de uma função que simplesmente retorne qualquer valor que você passar para ela — uma função de identidade. Com os tipos que você conhece até agora, você tem duas opções, e ambas são ruins.

Opção um: escrever uma cópia separada para cada tipo. Os corpos são idênticos; apenas as anotações mudam:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Cada novo tipo significa outra cópia, e um bug corrigido em uma deve ser corrigido em todas as outras. Essa é exatamente a duplicação que você escreve funções para evitar.

Opção dois: colapsá-las em uma única função tipada com any:

local function echo(value: any): any
    return value
end

Agora uma função lida com tudo — mas você pagou com a segurança de tipos. Quando você chama echo("hello"), o checker não sabe mais que o resultado é uma string. Ele só sabe any, então o autocompletar deixa de funcionar e os erros de tipo passam despercebidos: a conexão entre o que entrou e o que saiu é perdida.

O que você realmente quer é uma função que funcione para todo tipo e se lembre de qual tipo cada chamada usou. É precisamente isso que os genéricos oferecem a você — e eles são o assunto deste capítulo.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao Luau