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

Pratique por conta própria: Compilador de Lua online