איטרציה באמצעות ipairs()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 2 מתוך 54.
בעוד pairs() פועלת עם כל מבנה של טבלה, Lua מספקת פונקציה ייעודית בשם ipairs(), שתוכננה במיוחד עבור טבלאות בסגנון רשימה. הפונקציה הזו עוברת על הטבלאות לפי הסדר הרציף, החל באינדקס 1 וממשיכה עד שהיא נתקלת בערך nil.
התחביר של ipairs() דומה לזה של pairs():
for index, value in ipairs(myList) do
-- השתמשו כאן ב-index וב-value
endהנה דוגמה עם רשימה של פריטי משימה:
local questItems = {"Map", "Compass", "Torch", "Rope"}
for i, item in ipairs(questItems) do
print(i .. ". " .. item)
endפלט:
1. Map
2. Compass
3. Torch
4. Ropeההבדל העיקרי מ־pairs() הוא ש־ipairs() נעצרת מיד כשהיא מוצאת ערך nil, גם אם יש אחריו איברים נוספים.
אתגר
קלכתבו פונקציה listTasks שמקבלת טבלה tasks ומחזירה מחרוזת מעוצבת שמציגה את כל המשימות עם מספרי המיקום שלהן.
השתמשו ב־ipairs() כדי לעבור על המשימות לפי הסדר ולבנות מחרוזת שבה כל שורה מציגה את מספר המשימה ואחריו את שם המשימה בפורמט number. task. כל משימה צריכה להופיע בשורה נפרדת.
פרמטרים:
tasks(table): טבלה בסגנון רשימה שמכילה שמות של משימות כמחרוזות
ערך מוחזר: מחרוזת שבה כל משימה ממוספרת ומופיעה בשורה נפרדת. פורמט:
1. task1
2. task2
3. task3נסו בעצמכם
function listTasks(tasks)
-- כתבו כאן קוד
end
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין