Menu
Coddy logo textTech

Funktion: Tasks nach Status auflisten

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

challenge icon

Aufgabe

Einfach

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

Erstellen Sie eine Funktion namens filterTasks, die zwei Parameter entgegennimmt:

  • list vom Typ {Task}
  • done vom Typ boolean

Die Funktion sollte ein neues Array vom Typ {Task} erstellen und zurückgeben, das nur die Aufgaben enthält, deren done-flag dem Parameter entspricht.

Danach:

  1. speichern Sie filterTasks(tasks, false) in pending und filterTasks(tasks, true) in finished
  2. geben Sie #pending aus, danach den title jeder ausstehenden Aufgabe in einer eigenen Zeile (verwenden Sie ipairs)
  3. geben Sie #finished aus, danach den title jeder abgeschlossenen Aufgabe in einer eigenen Zeile

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

-- Schreibe hier Code
-- 1) definiere filterTasks(list: {Task}, done: boolean): {Task}
-- 2) erstelle `pending` (done == false) und `finished` (done == true)
-- 3) gib #pending und die ausstehenden Titel aus, dann #finished und
--    die erledigten Titel

Alle Lektionen in Einführung in Luau