Fungsi: Mencetak Ringkasan Tugas
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 49 dari 73.
Tantangan
MudahEditor kamu sudah berisi tipe Task, array tasks, addTask, completeTask, dan filterTasks dari pelajaran sebelumnya.
Buat fungsi bernama printSummary yang menerima satu parameter, list bertipe {Task}, tidak mengembalikan apa pun (tipe return ()), dan mencetak satu baris dengan format persis:
{doneCount}/{total} tasks donedi mana total adalah #list dan doneCount adalah jumlah task yang memiliki done == true (hitung dengan perulangan).
Lalu gunakan seluruh perangkat ini, dengan urutan berikut:
- panggil
printSummary(tasks) - panggil
completeTask(tasks, 2) - panggil
printSummary(tasks) - panggil
addTask(tasks, "Take a break") - panggil
printSummary(tasks)
Coba sendiri
-- The shape every task in the manager must follow
type Task = {
id: number,
title: string,
done: boolean,
}
-- The task list: a typed array of Task shapes
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},
}
-- Build a typed task with the next free id and insert it
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
-- Mark the task with the given id as done; report success
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
-- Collect the tasks whose done flag matches into a new {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
-- Split the list into pending and finished views
local pending: {Task} = filterTasks(tasks, false)
local finished: {Task} = filterTasks(tasks, true)
print(#pending)
for _, t in ipairs(pending) do
print(t.title)
end
print(#finished)
for _, t in ipairs(finished) do
print(t.title)
end
Semua pelajaran di Pengantar Luau
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Menentukan Tipe Parameter dan Nilai KembalianMenentukan Tipe Fungsi AnonimFungsi yang Tidak Mengembalikan NilaiParameter OpsionalNilai Default ParameterFungsi VariadikMendefinisikan Tipe FungsiRangkuman: Fungsi Bertipe7Proyek: Pengelola Tugas dengan Tipe
Proyek: Struktur TugasFungsi untuk Menambahkan Tugas2Tipe Inti
Tipe Dasar: num, str, boolTipe 'any': Jalan Keluar DaruratTipe 'unknown'Nil & Tipe OpsionalInferensi Tipe dalam PraktikAnotasi Tipe EksplisitUlasan: Latihan Tipe Inti5Alias, Union, dan Intersection
Alias Tipe untuk Tipe PrimitifTipe UnionMenggunakan Tipe UnionTipe LiteralTipe IntersectionMenggabungkan Alias TipeRekap: Kombinasi Tipe Lanjutan3Tabel Bertipe: array dan Map
array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMelakukan Iterasi pada TabelTabel dengan Bentuk Campuranarray Bertipe Multidimensitable.unpack dan VarargsRingkasan: array dan MapLatihan sendiri: Compiler Luau online