pairs() לעומת ipairs()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 3 מתוך 54.
עכשיו, לאחר שלמדת גם את pairs() וגם את ipairs(), חשוב להבין מתי להשתמש בכל אחת מהן. הבחירה תלויה לחלוטין במבנה הטבלה שלך ובמה שאת/ה מנסה להשיג.
השתמשו ב־ipairs() כשיש לכם טבלה בסגנון רשימה עם מפתחות שלמים עוקבים שמתחילים ב־1. היא מעבדת את האיברים לפי הסדר ועוצרת בערך nil הראשון, ולכן היא מושלמת למערכים שבהם הסדר חשוב.
השתמשו ב־pairs() כאשר במערך שלכם יש מפתחות מסוג מחרוזת, סוגי מפתחות מעורבים, או כשאתם צריכים לגשת לכל הערכים בלי קשר לפערים. היא עוברת על כל זוגות המפתח-ערך במערך ללא סדר מסוים.
עיינו בטבלה המעורבת הזו:
local gameData = {
"Level 1",
"Level 2",
"Level 3",
currentLevel = 2,
playerName = "Hero"
}אם תשתמש ב-ipairs(), תראה רק את שלוש מחרוזות הרמה. אם תשתמש ב-pairs(), תראה את כל חמשת הפריטים, כולל מפתחות המחרוזת.
אתגר
קלכתבו פונקציה countSequentialItems שמקבלת טבלה data ומחזירה את מספר הפריטים העוקבים שמפתחותיהם מספרים שלמים.
השתמשו ב־ipairs() כדי לספור כמה פריטים קיימים בחלק העוקב של הטבלה (החל באינדקס 1 ועד ל־nil הראשון). כך תוכלו להבין את ההבדל בין ipairs() לבין pairs() בעבודה עם טבלאות מעורבות.
פרמטרים:
data(טבלה): טבלה מעורבת שמכילה גם מפתחות עוקבים של מספרים שלמים וגם מפתחות מחרוזת
ערך מוחזר: מספר הפריטים העוקבים (מספר)
נסו בעצמכם
function countSequentialItems(data)
-- כתבו כאן קוד
end
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין