Menu
CoddyTech

A Lista de Armas

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

challenge icon

Desafio

Fácil

Preencha um inventário de armas tipado com addItem.

  1. Exclua as linhas abaixo de -- Try it.
  2. Acima dele, crie local weapons: {Item<{damage: number}>} = {}.
  3. Use addItem para adicionar "Iron Sword" com {damage = 25} e, em seguida, "Fire Axe" com {damage = 40}.
  4. Abaixo de -- Try it, imprima #weapons e weapons[2].name.

Pressione Executar código: a saída mostra 2 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
-- Experimente
print(addItem({}, "Old Map", "torn").id)

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

Pratique por conta própria: Compilador de Luau online