Menu
Coddy logo textTech

関数:ステータスでタスクを一覧表示

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

challenge icon

チャレンジ

簡単

エディタには、前のレッスンで作成した Task 型、tasks 配列、addTask、および completeTask がすでに含まれています。

2つのパラメータを受け取る filterTasks という名前の関数を作成してください:

  • 型が {Task}list
  • 型が booleandone

この関数は、done フラグがパラメータと一致するタスクのみを含む、型 {Task}新しい配列を作成して返します。

次に:

  1. filterTasks(tasks, false)pending に、filterTasks(tasks, true)finished に保持します
  2. #pending を出力し、続いて各保留中タスクのタイトルをそれぞれの行に出力します(ipairs を使用)
  3. #finished を出力し、続いて各完了済みタスクのタイトルをそれぞれの行に出力します

自分で試してみよう

-- マネージャー内のすべてのタスクが従わなければならない形状
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入門のすべてのレッスン