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.
Desafio
FácilAdicione uma função que procure um item pelo seu id.
- Exclua as linhas abaixo de
-- Try it. - Escreva
local function findItem<T>(inventory: {Item<T>}, id: number): Item<T>?retornando o item cujoidcorresponde, ounil. - Abaixo de
-- Try it, imprimafindItem(weapons, 99), depois armazenefindItem(weapons, 2)emlocal founde imprimafound.namedentro deif 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
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com funções
Tipagem de parâmetros e valores de retornoTipagem de funções anônimasFunções sem retornoParâmetros opcionaisValores padrão dos parâmetrosValores padrão para booleanosFunções variádicasDefinindo tipos de funçãoRecapitulação: funções tipadas7Projeto: Gerenciador de Tarefas Tipado
Projeto: A Estrutura da TarefaFunção para Adicionar uma Tarefa10Projeto: Inventário Genérico
Projeto: Item do InventárioFunção: Adicionar Itens2Tipos básicos
Número, string e booleanoO tipo 'any': válvula de escapeO tipo 'unknown'Tipos nulos e opcionaisInferência de tipos na práticaAnotações explícitas de tipoRevisão: prática com tipos básicos5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsPercorrendo TabelasTabelas com Formatos MistosLendo uma GradeConstruindo uma Gradetable.unpackRevisão: Arrays e MapsPratique por conta própria: Compilador de Luau online