Menu
CoddyTech

Función: Imprimir el resumen de tareas

Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 51 de 80.

challenge icon

Desafío

Fácil

Añade una función que muestre el progreso de la lista.

  1. Elimina las líneas debajo de -- Try it.
  2. Escribe local function printSummary(list: {Task}): () que cuente las tareas completadas e imprima `{doneCount}/{#list} tasks done`.
  3. Debajo de -- Try it, llama a printSummary(tasks), después a completeTask(tasks, 2) y después a printSummary(tasks) otra vez.

Pulsa Ejecutar código: la salida muestra 1/3 tasks done, después 2/3 tasks done.

Pruébalo tú mismo

-- La estructura que sigue cada tarea del gestor
type Task = {
    id: number,
    title: string,
    done: boolean,
}
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},
}
-- Crea una tarea con el siguiente id disponible y añádela a la lista
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 como completada la tarea con este id; indica si se encontró alguna
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
-- Una nueva lista de las tareas cuyo indicador done coincide
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
-- Pruébalo
local pending = filterTasks(tasks, false)
print(#pending)
print(pending[2].title)

Todas las lecciones de Introducción a Luau

Practica por tu cuenta: Compilador de Luau online