Menu
Coddy logo textTech

Fonction : Afficher le résumé des tâches

Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 49 sur 73.

challenge icon

Défi

Facile

Votre éditeur contient déjà le type Task, le tableau tasks, addTask, completeTask et filterTasks des leçons précédentes.

Créez une fonction nommée printSummary qui prend un paramètre, list de type {Task}, ne retourne rien (type de retour ()), et affiche une ligne au format exact :

{doneCount}/{total} tasks done

total est #list et doneCount est le nombre de tâches ayant done == true (comptez avec une boucle).

Ensuite, testez l'ensemble des outils, dans cet ordre :

  1. appelez printSummary(tasks)
  2. appelez completeTask(tasks, 2)
  3. appelez printSummary(tasks)
  4. appelez addTask(tasks, "Take a break")
  5. appelez printSummary(tasks)

Essayez vous-même

-- La forme que chaque tâche du gestionnaire doit suivre
type Task = {
    id: number,
    title: string,
    done: boolean,
}

-- La liste de tâches : un tableau typé de formes 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},
}

-- Construit une tâche typée avec le prochain id libre et l'insère
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

-- Marque la tâche avec l'id donné comme terminée ; signale le succès
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

-- Collecte les tâches dont le flag done correspond dans un nouveau {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

-- Écris le code ici
-- 1) définis printSummary(list: {Task}): () affichant
--    `{doneCount}/{total} tasks done`
-- 2) appelle printSummary, termine la tâche 2, appelle-la à nouveau,
--    ajoute "Take a break", appelle-la une dernière fois

Toutes les leçons de Introduction à Luau