איטרציה באמצעות 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(טבלה): טבלה בסגנון רשימה שמכילה שמות של משימות כמחרוזות
ערך מוחזר: מחרוזת שבה כל משימה ממוספרת ומופיעה בשורה נפרדת. פורמט:
1. task1
2. task2
3. task3נסו בעצמכם
function listTasks(tasks)
-- כתבו כאן קוד
end
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין