Funzione: Stampare il riepilogo delle attività
Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 49 di 73.
Sfida
FacileIl tuo editor contiene già il tipo Task, l'array tasks, addTask, completeTask e filterTasks delle lezioni precedenti.
Crea una funzione chiamata printSummary che accetta un parametro, list di tipo {Task}, non restituisce nulla (tipo restituito ()) e stampa una riga nel formato esatto:
{doneCount}/{total} tasks donedove total è #list e doneCount è il numero di attività con done == true (contale con un ciclo).
Poi esercitati con tutto il toolkit, in quest'ordine:
- chiama
printSummary(tasks) - chiama
completeTask(tasks, 2) - chiama
printSummary(tasks) - chiama
addTask(tasks, "Take a break") - chiama
printSummary(tasks)
Provalo tu
-- The shape every task in the manager must follow
type Task = {
id: number,
title: string,
done: boolean,
}
-- The task list: a typed array of Task shapes
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},
}
-- Build a typed task with the next free id and insert it
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
-- Mark the task with the given id as done; report success
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
-- Collect the tasks whose done flag matches into a new {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
-- Split the list into pending and finished views
local pending: {Task} = filterTasks(tasks, false)
local finished: {Task} = filterTasks(tasks, true)
print(#pending)
for _, t in ipairs(pending) do
print(t.title)
end
print(#finished)
for _, t in ipairs(finished) do
print(t.title)
end
Tutte le lezioni di Introduzione a Luau
1Per iniziare con Luau
Che cos'è Luau?Perché usare Luau?Il tuo primo codice LuauVerifica dei tipi e modalità di erroreRiepilogo: introduzione a Luau4Lavorare con le funzioni
Tipizzare i parametri e i valori restituitiTipizzare le funzioni anonimeFunzioni che non restituiscono nullaParametri opzionaliValori predefiniti dei parametriFunzioni variadicheDefinire i tipi di funzioneRiepilogo: funzioni tipizzate7Progetto: Gestore di attività tipizzato
Progetto: La struttura dell'attivitàFunzione per aggiungere un'attività2Tipi fondamentali
Tipi di base: num, str, boolIl tipo 'any': una via di fugaIl tipo 'unknown'Nil e tipi opzionaliL'inferenza dei tipi in azioneAnnotazioni esplicite dei tipiRipasso: esercizi sui tipi fondamentali5Alias, unioni e intersezioni
Alias di tipo per i primitiviTipi unioneLavorare con i tipi unioneTipi letteraliTipi intersezioneCombinare gli alias di tipoRiepilogo: combinazioni avanzate di tipi3Tabelle tipizzate: array e mappe
Array tipizzatiAggiungere e leggere elementiChe cos'è un tipo Map?Dichiarare e accedere alle mappeIterare sulle tabelleTabelle con strutture misteArray tipizzati multidimensionalitable.unpack e argomenti variabiliRiepilogo: array e mappeEsercitati da solo: Compilatore Luau online