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 problemáticas.

Opción uno: escribir una copia separada para 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 tipo nuevo implica otra copia, y un error corregido en una debe corregirse en todas. Esa es exactamente la duplicación que escribes funciones para evitar.

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

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

Ahora una sola función se encarga de todo, pero has pagado el precio con la seguridad de tipos. Cuando llamas a echo("hello"), el comprobador ya no sabe que el resultado es una cadena. Solo conoce any, así que el autocompletado deja de funcionar y los errores de tipo se filtran: se pierde la conexión entre lo que entra y lo que sale.

Lo que realmente quieres es una función que funcione para todos los tipos y recuerde qué tipo usó cada llamada. Eso es precisamente lo que te ofrecen 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

Practica por tu cuenta: Compilador de Lua online