Function to Change Task Status
Part of the Introduction To Luau section of Coddy's Lua journey — lesson 47 of 73.
Challenge
EasyYour editor already contains the Task type, the tasks array and addTask from the previous lessons.
Create a function named completeTask that takes two parameters:
listof type{Task}idof typenumber
The function should:
- loop over
listwithipairslooking for a task whoseidmatches - if found, set that task's
donetotrueand returntrue - if no task matches, return
false(return typeboolean)
Then print, each on its own line:
- the first task's
doneflag (before) - the result of
completeTask(tasks, 1) - the first task's
doneflag (after) - the result of
completeTask(tasks, 99)
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
-- Add a task and inspect what came back
local added: Task = addTask(tasks, "Review the code")
print(#tasks)
print(added.id)
print(added.title)
print(added.done)
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