Menu
Coddy logo textTech

Arrays genéricos

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 60 de 73.

Los genéricos resultan realmente útiles cuando intervienen las tablas. Ya escribes arrays tipados como {number} o {string}. Dentro de una función genérica, el tipo de elemento puede ser simplemente T, y {T} significa «un array de lo que sea que resulte ser T».

Este es el ejemplo clásico: obtener el primer elemento de cualquier array:

local function first<T>(items: {T}): T?
    return items[1]
end

Pasa un {string} y el comprobador infiere T = string, por lo que el resultado es una cadena. Pasa un {number} y es un número. Una sola función reemplaza toda una familia de copias para cada tipo.

Observa detenidamente el tipo de retorno: es T?, no T. Un array puede estar vacío, y después items[1] es nil: el tipo opcional que conociste antes lo expresa honestamente: «un T o nil». El comprobador indicará a quienes llamen a la función que gestionen el caso nil antes de usar el resultado, que es exactamente la detección de errores que esperas de un lenguaje tipado.

challenge icon

Desafío

Fácil

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

  • declare un parámetro de tipo T
  • acepte un parámetro llamado items de tipo {T}
  • devuelva el primer elemento, con tipo de retorno T? (es nil para un array vacío)

Crea estos arrays tipados:

  • fruits de tipo {string} con "apple", "banana", "cherry"
  • scores de tipo {number} con 10, 20, 30, 40
  • flags de tipo {boolean} con false, true
  • empty de tipo {string} sin elementos

Imprime el resultado de llamar a first con cada array, en ese orden, cada uno en su propia línea.

Pruébalo tú mismo

-- Escribe código aquí
-- 1) define first<T>(items: {T}): T? devolviendo items[1]
-- 2) crea fruits: {string}, scores: {number}, flags: {boolean},
--    y un array {string} vacío
-- 3) imprime first(...) de cada array, en ese orden
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