Função: Listar Tarefas por Status
Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 48 de 73.
Desafio
FácilSeu editor já contém o tipo Task, o array tasks, addTask e completeTask das lições anteriores.
Crie uma função chamada filterTasks que recebe dois parâmetros:
listdo tipo{Task}donedo tipoboolean
A função deve construir e retornar um novo array do tipo {Task} contendo apenas as tarefas cuja flag done seja igual ao parâmetro.
Depois:
- armazene
filterTasks(tasks, false)empendingefilterTasks(tasks, true)emfinished - imprima
#pending, e depois o título de cada tarefa pendente em sua própria linha (useipairs) - imprima
#finished, e depois o título de cada tarefa concluída em sua própria linha
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 dado 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
-- Escreva o código aqui
-- 1) defina filterTasks(list: {Task}, done: boolean): {Task}
-- 2) construa `pending` (done == false) e `finished` (done == true)
-- 3) imprima #pending e os títulos pendentes, depois #finished e
-- os títulos finalizados
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