Função: Obter Detalhes do Item
Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 67 de 73.
Desafio
MédioTermine o projeto! Mantenha tudo da lição anterior: Item<T>, addItem, findItem, os aliases Weapon/Potion, e ambos os inventários (weapons: Iron Sword 25 / Fire Axe 40, potions: Health Potion 40 / Mega Potion 90).
- Escreva
describeWeapon(item: Weapon): stringretornandoWeapon: [name] (damage [damage]). - Escreva
describePotion(item: Potion): stringretornandoPotion: [name] (heals [heal]). - Leia o número de queries com
tonumber(io.read()). - Para cada query, leia uma linha de category (
weaponoupotion) e uma linha de id (converta comtonumber). Busque no inventário correspondente comfindItem: imprima a descrição se o item existir, ouItem not foundcaso contrário.
Por exemplo, a entrada 2, weapon, 2, potion, 1 (um valor por linha) imprime:
Weapon: Fire Axe (damage 40)
Potion: Health Potion (heals 40)Experimente você mesmo
-- O sistema de inventário 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 function findItem<T>(inventory: {Item<T>}, id: number): Item<T>?
for _, item in ipairs(inventory) do
if item.id == id then
return item
end
end
return nil
end
type WeaponData = {damage: number}
type PotionData = {heal: number}
type Weapon = Item<WeaponData>
type Potion = Item<PotionData>
local weapons: {Weapon} = {}
addItem(weapons, "Iron Sword", {damage = 25})
addItem(weapons, "Fire Axe", {damage = 40})
local potions: {Potion} = {}
addItem(potions, "Health Potion", {heal = 40})
addItem(potions, "Mega Potion", {heal = 90})
-- Escreva o código aqui
-- 1) describeWeapon(item: Weapon): string e describePotion(item: Potion): string
-- 2) leia a contagem de consultas, então por consulta: linha de categoria + linha de id
-- 3) findItem in the right inventory; print the description or "Item not found"
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
Tipando Parâmetros e Valores de RetornoTipando Funções AnônimasFunções que Não Retornam NadaParâmetros OpcionaisValores Padrão para ParâmetrosFunções VariádicasDefinindo Tipos de FunçõesRecapitulação: Funções Tipadas7Projeto: Gerenciador de Tarefas Tipado
Projeto: O Formato da TarefaFunção para Adicionar uma Tarefa10Projeto: Inventário Genérico
Projeto: Item do InventárioFunção: Adicionar Itens2Tipos Fundamentais
Tipos Básicos: num, str, boolO Tipo 'any': Escape HatchO Tipo 'unknown'Tipos Nil e OpcionaisInferência de Tipos na PráticaAnotações Explícitas de TiposReciclagem: Prática de Tipos Fundamentais5Aliases, 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 MapsIterando Sobre TabelasTabelas de Formato MistoArrays Tipados Multidimensionaistable.unpack e VarargsRecapitulando: Arrays e Maps