함수: 상태별 태스크 목록 조회
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 48번째.
챌린지
쉬움에디터에는 이전 레슨에서 작성한 Task type, tasks array, addTask 및 completeTask가 이미 포함되어 있습니다.
두 개의 매개변수를 받는 filterTasks라는 이름의 function을 작성하세요:
{Task}타입의listboolean타입의done
이 함수는 done flag가 매개변수 값과 일치하는 task들만 포함하는 {Task} 타입의 새로운 array를 생성하여 return해야 합니다.
그런 다음:
filterTasks(tasks, false)를pending에 저장하고,filterTasks(tasks, true)를finished에 저장하세요.#pending을print한 다음, 대기 중인 각task의title을 별도의 줄에 출력하세요 (ipairs사용).#finished를print한 다음, 완료된 각task의title을 별도의 줄에 출력하세요.
직접 해보기
-- 매니저의 모든 태스크가 따라야 하는 형태
type Task = {
id: number,
title: string,
done: boolean,
}
-- 태스크 목록: Task 형태의 타입이 지정된 배열
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},
}
-- 다음 사용 가능한 id로 타입이 지정된 태스크를 만들어 삽입합니다
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
-- 주어진 id의 태스크를 완료로 표시하고 성공 여부를 보고합니다
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
-- 여기에 코드를 작성하세요
-- 1) filterTasks(list: {Task}, done: boolean): {Task}를 정의하세요
-- 2) `pending`(done == false)과 `finished`(done == true)를 만드세요
-- 3) #pending과 pending 제목들을 출력한 다음, #finished와
-- finished 제목들
Luau 소개의 모든 레슨
7프로젝트: Typed Task Manager
프로젝트: 태스크 형태 정의하기태스크 추가 함수