Função: Imprimir Resumo das Tarefas
Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 49 de 73.
Desafio
FácilSeu editor já contém o tipo Task, o array tasks, e as funções addTask, completeTask e filterTasks das lições anteriores.
Crie uma função chamada printSummary que recebe um parâmetro, list do tipo {Task}, não retorna nada (tipo de retorno ()), e imprime uma linha no formato exato:
{doneCount}/{total} tasks doneonde total é #list e doneCount é quantas tarefas têm done == true (conte com um loop).
Em seguida, exercite todo o kit de ferramentas, nesta ordem:
- chame
printSummary(tasks) - chame
completeTask(tasks, 2) - chame
printSummary(tasks) - chame
addTask(tasks, "Take a break") - chame
printSummary(tasks)
Experimente você mesmo
-- A forma que toda tarefa no gerenciador deve seguir
type Task = {
id: number,
title: string,
done: boolean,
}
-- A lista de tarefas: um array tipado de formas Task
local tasks: {Task} = {
{id = 1, title = "Learn Luau types", done = false},
{id = 2, title = "Build a task manager", done = false},
{id = 3, title = "Write tests", done = true},
}
-- Constrói uma tarefa tipada com o próximo id livre e a insere
local function addTask(list: {Task}, title: string): Task
local newTask: Task = {
id = #list + 1,
title = title,
done = false,
}
table.insert(list, newTask)
return newTask
end
-- Marca a tarefa com o id fornecido como concluída; reporta o sucesso
local function completeTask(list: {Task}, id: number): boolean
for _, t in ipairs(list) do
if t.id == id then
t.done = true
return true
end
end
return false
end
-- Coleta as tarefas cuja flag done corresponde em um novo {Task}
local function filterTasks(list: {Task}, done: boolean): {Task}
local result: {Task} = {}
for _, t in ipairs(list) do
if t.done == done then
table.insert(result, t)
end
end
return result
end
-- Escreva o código aqui
-- 1) defina printSummary(list: {Task}): () imprimindo
-- `{doneCount}/{total} tasks done`
-- 2) chame printSummary, complete a tarefa 2, chame novamente,
-- adicione "Take a break", chame uma última vez
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 Tarefa2Tipos 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