Menu
CoddyTech

Función: Buscar elemento por ID

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

challenge icon

Desafío

Fácil

Añade una función que busque un elemento por su id.

  1. Elimina las líneas debajo de -- Try it.
  2. Escribe local function findItem<T>(inventory: {Item<T>}, id: number): Item<T>? para que devuelva el elemento cuyo id coincida, o nil.
  3. Debajo de -- Try it, imprime findItem(weapons, 99), luego guarda findItem(weapons, 2) en local found e imprime found.name dentro de if found then.

Pulsa Ejecutar código: el resultado muestra nil y Fire Axe.

Pruébalo tú mismo

-- La estructura de los objetos que comparten todos los inventarios
type Item<T> = {
    id: number,
    name: string,
    data: T,
}
local sword: Item<{damage: number}> = {id = 1, name = "Iron Sword", data = {damage = 25}}
local potion: Item<{heal: number}> = {id = 2, name = "Health Potion", data = {heal = 40}}
-- Crea un objeto con el siguiente id disponible, guárdalo y devuélvelo
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}>} = {}
addItem(weapons, "Iron Sword", {damage = 25})
addItem(weapons, "Fire Axe", {damage = 40})
-- Pruébalo
print(#weapons)
print(weapons[2].name)

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online