Menu
Coddy logo textTech

関数:タスクのサマリーを出力

CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 49/73。

challenge icon

チャレンジ

簡単

エディタには、前のレッスンで作成した Task 型、tasks 配列(array)、addTaskcompleteTaskfilterTasks があらかじめ含まれています。

1つのパラメータ({Task} 型の list)を受け取り、何も返さず(返り値の type())、次の正確な形式で1 line 出力する printSummary という名前の function を作成してください:

{doneCount}/{total} tasks done

ここで total#list であり、doneCountdone == true であるタスクの数です(ループを使ってカウントします)。

次に、以下の順番でツールキット全体をテストしてください:

  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入門のすべてのレッスン