Menu
Coddy logo textTech

Função: Buscar Item por ID

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 65 de 73.

challenge icon

Desafio

Fácil

Extenda seu projeto da aula anterior (mantenha Item<T>, addItem e o inventário weapons com seus dois itens).

  • Escreva uma function genérica findItem<T>(inventory: {Item<T>}, id: number): Item<T>? que percorra o inventário e retorne o item cujo id corresponda, ou nil se nenhum corresponder.
  • Chame findItem(weapons, 2). Se retornar um item, imprima o name do item e depois o seu data.damage (duas linhas); caso contrário, imprima "Item not found".
  • Chame findItem(weapons, 99). Se retornar um item, imprima o name do item; caso contrário, imprima "Item not found".

Experimente você mesmo

-- Das lições 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})

-- Escreva o código aqui
-- 1) findItem<T>(inventory: {Item<T>}, id: number): Item<T>?
-- 2) look up ids 2 and 99, printing details or "Item not found"

Todas as lições de Introdução ao Luau

Pratique por conta própria: Compilador de Lua online