Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دالة: طباعة ملخص المهام

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 49 من 73.

challenge icon

التحدي

سهل

محررك يحتوي بالفعل على النوع Task والمصفوفة tasks والدوال addTask و completeTask و filterTasks من الدروس السابقة.

أنشئ دالة باسم printSummary تأخذ معاملاً واحدًا، list من النوع {Task}، ولا ترجع أي شيء (نوع الإرجاع ())، وتطبع سطرًا واحدًا بالتنسيق الدقيق:

{doneCount}/{total} tasks done

حيث تكون total هي #list و doneCount هي عدد المهام التي تحتوي على done == 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},
}

-- أنشئ مهمة من النوع مع المعرف الحر التالي وأدرجها
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

-- علّم المهمة ذات المعرف المعطى كمكتملة؛ أبلغ عن النجاح
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

تدرّب بنفسك: مترجم Lua عبر الإنترنت