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 se vuelven realmente útiles cuando hay tablas de por medio. Ya escribes arrays con tipo 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".

Aquí está 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 verificador infiere T = string, por lo que el resultado es un string. Pasa un {number} y es un number. Una sola función reemplaza a toda una familia de copias por cada tipo.

Mira de cerca 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 dice sinceramente: "un T, o nil". El verificador impulsará a quienes llamen a la función a manejar el caso nil antes de usar el resultado, que es exactamente la detección de errores que esperas de un lenguaje con tipos.

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 con tipo:

  • 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? returning 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