Menu
CoddyTech

Função: Encontrar Item por ID

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

challenge icon

Desafio

Fácil

Adicione uma função que procure um item pelo seu id.

  1. Exclua as linhas abaixo de -- Try it.
  2. Escreva local function findItem<T>(inventory: {Item<T>}, id: number): Item<T>? retornando o item cujo id corresponde, ou nil.
  3. Abaixo de -- Try it, imprima findItem(weapons, 99), depois armazene findItem(weapons, 2) em local found e imprima found.name dentro de if found then.

Pressione Executar código: a saída mostra nil e Fire Axe.

Experimente você mesmo

-- A estrutura de item compartilhada por todos os inventários
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}}
-- Crie um item com o próximo id disponível, armazene-o e retorne-o
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})
-- Teste
print(#weapons)
print(weapons[2].name)

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

Pratique por conta própria: Compilador de Luau online