Menu
Coddy logo textTech

Fonksiyon: Görev Özetini Yazdırma

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 49 / 73.

challenge icon

Görev

Kolay

Düzenleyiciniz zaten önceki derslerden Task türünü, tasks dizisini, addTask, completeTask ve filterTasks fonksiyonlarını içermektedir.

{Task} türünde list adında bir parametre alan, hiçbir şey döndürmeyen (dönüş türü ()) ve tam olarak şu formatta tek bir satır yazdıran printSummary adında bir fonksiyon oluşturun:

{doneCount}/{total} tasks done

burada total değeri #list ve doneCount ise done == true olan görev sayısıdır (bir döngü ile sayın).

Ardından tüm araç setini şu sırayla çalıştırın:

  1. printSummary(tasks) fonksiyonunu çağırın
  2. completeTask(tasks, 2) fonksiyonunu çağırın
  3. printSummary(tasks) fonksiyonunu çağırın
  4. addTask(tasks, "Take a break") fonksiyonunu çağırın
  5. printSummary(tasks) fonksiyonunu çağırın

Kendin dene

-- Yöneticideki her görevin uyması gereken şekil
type Task = {
    id: number,
    title: string,
    done: boolean,
}

-- Görev listesi: Task şekillerinden oluşan tipli bir dizi
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},
}

-- Sonraki boş id ile tipli bir görev oluştur ve ekle
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

-- Verilen id'ye sahip görevi tamamlandı olarak işaretle; başarıyı bildir
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 bayrağı eşleşen görevleri yeni bir {Task} içine topla
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

-- Kodu buraya yaz
-- 1) printSummary(list: {Task}): () tanımlayın, şunu yazdıran
--    `{doneCount}/{total} tasks done`
-- 2) printSummary'yi çağırın, görev 2'yi tamamlayın, tekrar çağırın,
--    "Take a break" ekleyin, son bir kez çağırın

Luau'ya Giriş bölümündeki tüm dersler