Menu
Coddy logo textTech

Funkcja: Lista zadań według statusu

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 48 z 73.

challenge icon

Wyzwanie

Łatwy

Twój edytor zawiera już typ Task, tablicę tasks, addTask i completeTask z poprzednich lekcji.

Utwórz funkcję o nazwie filterTasks, która przyjmuje dwa parametry:

  • list typu {Task}
  • done typu boolean

Funkcja powinna utworzyć i zwrócić nową tablicę typu {Task}, zawierającą tylko te zadania, których flaga done jest równa parametrowi.

Następnie:

  1. zapisz filterTasks(tasks, false) w pending, a filterTasks(tasks, true) w finished
  2. wypisz #pending, a następnie tytuł każdego oczekującego zadania w osobnym wierszu (użyj ipairs)
  3. wypisz #finished, a następnie tytuł każdego ukończonego zadania w osobnym wierszu

Spróbuj swoich sił

-- 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

-- Complete task 1, then try an id that doesn't exist
print(tasks[1].done)
print(completeTask(tasks, 1))
print(tasks[1].done)
print(completeTask(tasks, 99))

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online