Menu
Coddy logo textTech

Funktion: Task-Zusammenfassung ausgeben

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 49 von 73.

challenge icon

Aufgabe

Einfach

Dein Editor enthält bereits den Typ Task, das Array tasks, addTask, completeTask und filterTasks aus den vorherigen Lektionen.

Erstelle eine Funktion namens printSummary, die einen Parameter list vom Typ {Task} entgegennimmt, nichts zurückgibt (Rückgabetyp ()) und genau eine Zeile in folgendem Format ausgibt:

{doneCount}/{total} tasks done

wobei total gleich #list entspricht und doneCount angibt, wie viele Tasks done == true haben (zähle dies mit einer Schleife).

Führe anschließend das gesamte Toolkit in dieser Reihenfolge aus:

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

Probier es selbst

-- Die Form, der jede Aufgabe im Manager folgen muss
type Task = {
    id: number,
    title: string,
    done: boolean,
}

-- Die Aufgabenliste: ein typisiertes Array von Task-Formen
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},
}

-- Erstelle eine typisierte Aufgabe mit der nächsten freien id und füge sie ein
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

-- Markiere die Aufgabe mit der gegebenen id als erledigt; melde Erfolg
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

-- Sammle die Aufgaben, deren done-Flag übereinstimmt, in ein neues {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

-- Schreibe hier Code
-- 1) definiere printSummary(list: {Task}): () die ausgibt
--    `{doneCount}/{total} tasks done`
-- 2) rufe printSummary auf, schließe Aufgabe 2 ab, rufe es erneut auf,
--    füge "Take a break" hinzu, rufe es ein letztes Mal auf

Alle Lektionen in Einführung in Luau