Menu
Coddy logo textTech

El problema que resuelven los genéricos

Parte de la sección Introducción a Luau del Journey de Lua de Coddy — lección 57 de 73.

Imagina que necesitas una función que simplemente devuelva cualquier valor que le pases: una función de identidad. Con los tipos que conoces hasta ahora, tienes dos opciones, y ambas son perjudiciales.

Opción uno: escribir una copia separada por cada tipo. Los cuerpos son idénticos; solo cambian las anotaciones:

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

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

Cada nuevo tipo significa otra copia, y un error corregido en una debe corregirse en todas. Esa es exactamente la duplicación que se busca evitar al escribir funciones.

Opción dos: unificarlas en una sola función tipada con any:

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

Ahora una sola función lo gestiona todo, pero has pagado con la seguridad de tipos. Cuando llamas a echo("hello"), el checker ya no knows que el result es un string. Solo sabe any, por lo que el autocompletado deja de funcionar y los errores de tipo se escapan: la conexión entre lo que entró y lo que sale se pierde.

Lo que realmente quieres es una función que funcione para cada tipo y recuerde qué tipo utilizó cada llamada. Eso es precisamente lo que te dan los genéricos, y son el tema de este capítulo.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Introducción a Luau