Function: List Tasks by Status
Part of the Introduction To Luau section of Coddy's Lua journey — lesson 48 of 73.
Challenge
EasyYour editor already contains the Task type, the tasks array, addTask and completeTask from the previous lessons.
Create a function named filterTasks that takes two parameters:
listof type{Task}doneof typeboolean
The function should build and return a new array of type {Task} containing only the tasks whose done flag equals the parameter.
Then:
- store
filterTasks(tasks, false)inpendingandfilterTasks(tasks, true)infinished - print
#pending, then each pending task's title on its own line (useipairs) - print
#finished, then each finished task's title on its own line
Try it yourself
-- 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))
All lessons in Introduction To Luau
1Getting Started with Luau
What Is Luau?Why Use Luau?Your First Luau CodeType Checking & Error ModesRecap: Introduction to Luau4Working with Functions
Typing Params & Return ValuesTyping Anonymous FunctionsFunctions Returning NothingOptional ParametersDefault Parameter ValuesVariadic FunctionsDefining Function TypesRecap: Typed Functions7Project: Typed Task Manager
Project: The Task ShapeFunction to Add a Task2Core Types
Basic Types: num, str, boolThe 'any' Type: Escape HatchThe 'unknown' TypeNil & Optional TypesType Inference in ActionExplicit Type AnnotationsRecap: Core Types Practice5Aliases, Unions, Intersections
Type Aliases for PrimitivesUnion TypesWorking with Union TypesLiteral TypesIntersection TypesCombining Type AliasesRecap: Advanced Type Combos3Typed Tables: Arrays & Maps
Typed ArraysAdding and Reading ElementsWhat is a Map Type?Declaring and Accessing MapsIterating TablesMixed-Shape TablesMulti-dimensional Typed Arraystable.unpack and VarargsRecap: Arrays and Maps