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.
Défi
FacileVotre é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 doneoù 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 :
- appelez
printSummary(tasks) - appelez
completeTask(tasks, 2) - appelez
printSummary(tasks) - appelez
addTask(tasks, "Take a break") - 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
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typage des paramètres et valeurs de retourTypage des fonctions anonymesFonctions ne retournant rienParamètres optionnelsValeurs par défaut des paramètresFonctions variadiquesDéfinition des types de fonctionsRécapitulatif : Fonctions typées7Projet : Gestionnaire de tâches typé
Projet : La structure d'une tâcheFonction pour ajouter une tâche2Types fondamentaux
Types de base : num, str, boolLe type 'any' : la porte de sortieLe type 'unknown'Types Nil et optionnelsL'inférence de type en actionAnnotations explicites de typeRécapitulatif : Pratique des types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées3Tables typées : Tableaux et Maps
Tableaux typésAjout et lecture d'élémentsQu'est-ce qu'un type Map ?Déclaration et accès aux MapsItération sur les tablesTables à formes mixtesTableaux typés multidimensionnelstable.unpack et VarargsRécapitulatif : Tableaux et Maps