Menu
Coddy logo textTech

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.

challenge icon

Desafio

Fácil

Seu 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:

  • list do tipo {Task}
  • done do tipo boolean

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:

  1. armazene filterTasks(tasks, false) em pending e filterTasks(tasks, true) em finished
  2. imprima #pending, e depois o título de cada tarefa pendente em sua própria linha (use ipairs)
  3. 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