関数:ステータスでタスクを一覧表示
CoddyのLuaジャーニー「Luau入門」セクションの一部 — レッスン 48/73。
チャレンジ
簡単エディタには、前のレッスンで作成した Task 型、tasks 配列、addTask、および completeTask がすでに含まれています。
2つのパラメータを受け取る filterTasks という名前の関数を作成してください:
- 型が
{Task}のlist - 型が
booleanのdone
この関数は、done フラグがパラメータと一致するタスクのみを含む、型 {Task} の新しい配列を作成して返します。
次に:
filterTasks(tasks, false)をpendingに、filterTasks(tasks, true)をfinishedに保持します#pendingを出力し、続いて各保留中タスクのタイトルをそれぞれの行に出力します(ipairsを使用)#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入門のすべてのレッスン
7プロジェクト:Typed Task Manager
プロジェクト:タスクの型定義タスクを追加する関数