Menu
Coddy logo textTech

함수: 태스크 요약 출력

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 49번째.

challenge icon

챌린지

쉬움

에디터에는 이전 레슨에서 작성한 Task 타입, tasks 배열, addTask, completeTask, filterTasks가 이미 포함되어 있습니다.

{Task} 타입의 list 매개변수 하나를 받고, 아무것도 반환하지 않는(반환 타입 ()) printSummary 함수를 작성하여 다음 형식과 정확히 일치하는 한 줄을 출력하세요:

{doneCount}/{total} tasks done

여기서 total#list이고, doneCountdone == true인 task의 개수입니다(루프를 사용하여 계산합니다).

그런 다음, 아래 순서대로 전체 툴킷을 실행하세요:

  1. printSummary(tasks) 호출
  2. completeTask(tasks, 2) 호출
  3. printSummary(tasks) 호출
  4. addTask(tasks, "Take a break") 호출
  5. printSummary(tasks) 호출

직접 해보기

-- 매니저의 모든 작업이 따라야 하는 형태
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

-- done 플래그가 일치하는 작업들을 새로운 {Task}로 수집합니다
local function filterTasks(list: {Task}, done: boolean): {Task}
    local result: {Task} = {}
    for _, t in ipairs(list) do
        if t.done == done then
            table.insert(result, t)
        end
    end
    return result
end

-- 여기에 코드를 작성하세요
-- 1) printSummary(list: {Task}): ()를 정의하여 출력
--    `{doneCount}/{total} tasks done`
-- 2) printSummary를 호출하고, 작업 2를 완료한 후, 다시 호출하고,
--    "Take a break"를 추가한 뒤, 마지막으로 한 번 더 호출합니다

Luau 소개의 모든 레슨