Menu
CoddyTech

Uso de una función genérica

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 63 de 80.

Nunca le dices a identity qué es T: el comprobador lo averigua por sí solo. Esto es inferencia de tipos: en cada punto de llamada, Luau examina el argumento y resuelve T:

local word = identity("Luau")   -- T se infiere como string
local count = identity(12)      -- T se infiere como number
local flag = identity(false)    -- T se infiere como boolean

Cada llamada es independiente: T puede ser una cadena en una línea y un número en la siguiente. El resultado inferido es igual de seguro que una anotación escrita a mano: para el comprobador, word es una string, con autocompletado completo y comprobación de errores.

Una diferencia importante con TypeScript: TS te permite forzar el tipo en el punto de llamada con identity<number>(5). Luau no tiene argumentos de tipo en el punto de llamada. Esa línea no es una sintaxis especial, así que Luau interpreta los signos angulares como comparaciones de menor que y mayor que, y el código falla. Cuando quieras especificar el tipo explícitamente, anota la variable:

local count: number = identity(12)

Puedes observar la inferencia en acción con una herramienta conocida: typeof devuelve el nombre del tipo de un valor en tiempo de ejecución, así que print(typeof(identity(12))) imprime number: el valor pasó por la función genérica completamente sin cambios.

challenge icon

Desafío

Fácil

Deja que el comprobador determine T en cada llamada.

  1. Debajo de la función, almacena identity("Oslo") en local city y identity(42) en local floors, sin anotaciones.
  2. Imprime typeof(city) y después typeof(floors).

Pulsa Ejecutar código: la salida muestra string y number.

Pruébalo tú mismo

-- La función genérica identity de la lección anterior
local function identity<T>(value: T): T
    return value
end

-- 1) city y floors a partir de llamadas a identity, sin anotaciones
-- 2) imprime typeof de cada uno

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online