Menu
CoddyTech

Arrays genéricos

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

Los genéricos resultan muy útiles cuando se trabaja con tablas. Ya escribes arreglos tipados como {number} o {string}. Dentro de una función genérica, el tipo del elemento puede ser simplemente T, y {T} significa «un arreglo de lo que resulte ser T».

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

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

Pasa un {string} y el verificador infiere T = string, así que el resultado es una cadena. Pasa un {number} y será un número. Una función reemplaza toda una familia de copias para cada tipo.

Fíjate bien en el tipo de retorno: es T?, no T. Un arreglo puede estar vacío, y entonces items[1] es nil: el tipo opcional que conociste antes lo expresa con claridad: «un T o nil». El verificador avisará a quienes llamen a la función que deben gestionar el caso nil antes de usar el resultado, que es precisamente el tipo de detección de errores que quieres de un lenguaje tipado.

challenge icon

Desafío

Fácil

Obtén el primer elemento de cualquier arreglo.

  1. Escribe local function first<T>(items: {T}): T? que devuelva items[1].
  2. Declara local fruits: {string} = {"apple", "banana"} y local empty: {number} = {}.
  3. Imprime first(fruits) y después first(empty).

Presiona Run Code: la salida muestra apple y nil.

Pruébalo tú mismo

-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string} y un {number} vacío
-- 3) imprime el primero de cada uno

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online