פונקציה: הצגת משימות לפי סטטוס
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 48 מתוך 73.
אתגר
קלהעורך שלך כבר מכיל את הטיפוס Task, את המערך tasks, את addTask ואת completeTask מהשיעורים הקודמים.
צור פונקציה בשם filterTasks שמקבלת שני פרמטרים:
listמטיפוס{Task}doneמטיפוסboolean
הפונקציה צריכה ליצור ולהחזיר מערך חדש מטיפוס {Task}, שמכיל רק את המשימות שהדגל done שלהן שווה לפרמטר.
לאחר מכן:
- שמור את
filterTasks(tasks, false)במשתנהpendingואתfilterTasks(tasks, true)במשתנהfinished - הדפס את
#pending, ואז את הכותרת של כל משימה ממתינה בשורה נפרדת (השתמש ב-ipairs) - הדפס את
#finished, ואז את הכותרת של כל משימה שהושלמה בשורה נפרדת
נסו בעצמכם
-- 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
-- Complete task 1, then try an id that doesn't exist
print(tasks[1].done)
print(completeTask(tasks, 1))
print(tasks[1].done)
print(completeTask(tasks, 99))
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים7פרויקט: מנהל משימות עם טיפוסים
פרויקט: מבנה המשימהפונקציה להוספת משימה2טיפוסי ליבה
טיפוסים בסיסיים: num, str, boolהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוסים מפורשותסיכום: תרגול טיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספת איברים וקריאתםמהו טיפוס Map?הצהרה על מפות וגישה אליהןמעבר על טבלאותטבלאות בעלות מבנים מעורביםמערכים רב־ממדיים מטיפוס מוגדרtable.unpack ו־Varargsסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין