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]
endPasa 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.
Desafío
FácilCrea una función genérica llamada first que:
- declare un parámetro de tipo
T - acepte un parámetro llamado
itemsde tipo{T} - devuelva el primer elemento, con tipo de retorno
T?(esnilpara un array vacío)
Crea estos arrays tipados:
fruitsde tipo{string}con"apple","banana","cherry"scoresde tipo{number}con10,20,30,40flagsde tipo{boolean}confalse,trueemptyde 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
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
1Primeros pasos con Luau
¿Qué es Luau?¿Por qué usar Luau?Tu primer código en LuauComprobación de tipos y modos de errorRecapitulacion: Introducción a Luau4Trabajando con Funciones
Tipado de Parámetros y Valores de RetornoTipado de Funciones AnónimasFunciones que no Retornan NadaParámetros OpcionalesValores por Defecto en ParámetrosFunciones VariádicasDefinición de Tipos de FuncionesRecapitulaciones: Funciones Tipadas2Tipos principales
Tipos básicos: num, str, boolEl tipo 'any': Vía de escapeEl tipo 'unknown'Tipos nulos y opcionalesInferencia de tipos en acciónAnotaciones explícitas de tiposResumen: Práctica de tipos principales5Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de uniónTrabajando con tipos de uniónTipos literalesTipos de intersecciónCombinando alias de tiposResumen: Combinaciones avanzadas de tipos3Tablas tipadas: Arrays y Maps
Arrays tipadosAñadir y leer elementos¿Qué es un tipo Map?Declarar y acceder a MapsIterar tablasTablas de forma mixtaArrays tipados multidimensionalestable.unpack y VarargsRecapitulaciones: Arrays y Maps6Definición de formas de tablas
Anotaciones de forma en líneaAlias de tipos para formasPropiedades opcionalesFormas frente a tablas no estructuradasExtensión de formasAñadir métodos a las formasEl parámetro 'self' y los métodos con dos puntosRecapitulación: Definición de formas de tablas9Genéricos: Una primera mirada
El problema que resuelven los genéricosUna función de identidad genéricaUso de una función genéricaArrays genéricosAlias de tipos genéricosResumen: Funciones genéricasPractica por tu cuenta: Compilador de Lua online