Menu
Coddy logo textTech

Fonction : Lister les tâches par statut

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

challenge icon

Défi

Facile

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

Créez une fonction nommée filterTasks qui prend deux paramètres :

  • list de type {Task}
  • done de type boolean

La fonction doit construire et renvoyer un nouveau tableau de type {Task} contenant uniquement les tâches dont le flag done est égal au paramètre.

Ensuite :

  1. stockez filterTasks(tasks, false) dans pending et filterTasks(tasks, true) dans finished
  2. affichez #pending, puis le titre de chaque tâche en attente sur sa propre ligne (utilisez ipairs)
  3. affichez #finished, puis le titre de chaque tâche terminée sur sa propre ligne

Essayez vous-même

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

-- La liste des 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

-- Écrivez le code ici
-- 1) définir filterTasks(list: {Task}, done: boolean): {Task}
-- 2) construire `pending` (done == false) et `finished` (done == true)
-- 3) afficher #pending et les titres pending, puis #finished et
--    les titres finished

Toutes les leçons de Introduction à Luau