Función: Buscar elemento por ID
Parte de la sección Introducción a Luau del Journey de Lua de Coddy — lección 65 de 73.
Desafío
FácilExtiende tu proyecto de la lección anterior (mantén Item<T>, addItem y el inventario weapons con sus dos elementos).
- Escribe una función genérica
findItem<T>(inventory: {Item<T>}, id: number): Item<T>?que recorra el inventario y devuelva el elemento cuyoidcoincida, onilsi ninguno coincide. - Llama a
findItem(weapons, 2). Si devuelve un elemento, imprime elnamedel elemento y después sudata.damage(dos líneas); de lo contrario, imprimeItem not found. - Llama a
findItem(weapons, 99). Si devuelve un elemento, imprime elnamedel elemento; de lo contrario, imprimeItem not found.
Pruébalo tú mismo
-- De las lecciones anteriores
type Item<T> = {
id: number,
name: string,
data: T,
}
local function addItem<T>(inventory: {Item<T>}, name: string, data: T): Item<T>
local item: Item<T> = {
id = #inventory + 1,
name = name,
data = data,
}
table.insert(inventory, item)
return item
end
local weapons: {Item<{damage: number}>} = {}
local sword = addItem(weapons, "Iron Sword", {damage = 25})
local axe = addItem(weapons, "Fire Axe", {damage = 40})
-- Escribe código aquí
-- 1) findItem<T>(inventory: {Item<T>}, id: number): Item<T>?
-- 2) look up ids 2 and 99, printing details or "Item not found"
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 Tipadas7Proyecto: Gestor de tareas tipado
Proyecto: La forma de la tareaFunción para añadir una tarea10Proyecto: Inventario genérico
Proyecto: Elemento de inventarioFunción: Añadir elementos2Tipos 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 Maps