Menu
Coddy logo textTech

Una función de identidad genérica

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

Aquí está la función identity hecha correctamente — como una generic function:

local function identity<T>(value: T): T
    return value
end

El <T> después del nombre de la función declara un parámetro de tipo — un marcador de posición que representa "algún tipo, decidido en cada call". Dentro de la firma usas T exactamente como un tipo real: el parámetro es un T, y la función devuelve un T.

Usar el mismo T para la entrada y la salida es todo el truco — los vincula entre sí. Haz un call a identity("hello") y el comprobador decide T = string para ese call, por lo que el result es un string. Haz un call a identity(42) y T = number, por lo que el result es un number. One cuerpo, every tipo, nada se pierde.

T es solo un nombre convencional (abreviatura de "Tipo") — <Item> o <Value> funcionan igual de bien. Y como siempre en Luau, los corchetes angulares existen solo para el comprobador: en tiempo de ejecución esta es la función Lua habitual function identity(value) return value end.

challenge icon

Desafío

Fácil

Crea una función genérica llamada identity que:

  • declare un parámetro de tipo T
  • acepte un parámetro llamado value de tipo T
  • devuelva ese valor, con tipo de retorno T

Después crea estas variables con tipo utilizando tu función:

  • luckyNumber de tipo number — llama a identity con 7
  • greeting de tipo string — llama a identity con "Hello, Luau!"
  • isReady de tipo boolean — llama a identity con true

Imprime lo siguiente, cada uno en su propia línea:

  1. luckyNumber
  2. greeting
  3. isReady
  4. el resultado de llamar a identity con "generics" directamente dentro de print
  5. el resultado de llamar a identity con 99 directamente dentro de print

Pruébalo tú mismo

-- Escribe código aquí
-- 1) define identity<T>(value: T): T
-- 2) crea luckyNumber, greeting e isReady con llamadas a identity
-- 3) imprímelos, luego imprime identity("generics") e identity(99)
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