איטרציה באמצעות pairs()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 1 מתוך 54.
pairs() מאפשרת לעשות זאת על ידי כך שהיא מאפשרת לך לעבור בלולאה על כל הרשומות בטבלה, בלי קשר לסוג המפתחות.התחביר לשימוש ב־pairs() בלולאת for נראה כך:for key, value in pairs(myTable) do
-- השתמשו כאן ב-key וב-value
endpairs() מספקת גם את המפתח וגם את הערך המתאים לו. פירוש הדבר הוא שאפשר לגשת לשני פריטי המידע ולעבוד איתם בו-זמנית.הנה דוגמה מעשית למלאי של שחקן:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() פועלת עם כל סוג של מפתח, כולל מחרוזות, מספרים או אפילו טבלאות אחרות.לאתגר: בניית מחרוזתהאתגר שלהלן מבקש ממך להחזיר כל רשומה כמחרוזת אחת, לכן הנה תזכורת לשני כלים לעבודה עם מחרוזות מתוך יסודות. מחברים מחרוזות באמצעות אופרטור השרשור, שהוא שתי נקודות (..). לדוגמה, "Hello" .. " " .. "World" מחזיר את התוצאה "Hello World".אם צריך לעצב טקסט על פני כמה שורות, אפשר להשתמש בתו המילוט של שורה חדשה, "\n". כש-Lua נתקל ב-"\n" בתוך מחרוזת, הוא מתייחס אליו כאל פקודה לעבור לשורה הבאה.לדוגמה, print("Line 1\nLine 2") יציג:Line 1
Line 2אתגר
קלכתבו פונקציה printInventory שמקבלת טבלת inventory ומחזירה מחרוזת מעוצבת שמפרטת את כל הפריטים ואת הכמויות שלהם.
השתמשו ב־pairs() כדי לעבור על טבלת המלאי ולבנות מחרוזת שבה כל שורה מציגה את שם הפריט ולאחריו את הכמות שלו, בפורמט item: quantity. כל פריט צריך להופיע בשורה נפרדת.
כדי להציג כל פריט בשורה משלו, השתמשו בתו newline "\n" בין הרשומות. לדוגמה, "apple: 5\nbanana: 3" יוצג בשתי שורות נפרדות. הקפידו לא להוסיף "\n" בתחילת המחרוזת לפני הפריט הראשון: הוסיפו אותו רק בין פריטים.
פרמטרים:
inventory(table): טבלה בסגנון מילון שבה המפתחות הם שמות הפריטים (מחרוזות) והערכים הם כמויות (מספרים)
ערך מוחזר: מחרוזת שבה כל פריט וכמותו מופיעים בשורה נפרדת, ומופרדים באמצעות "\n". פלט לדוגמה עבור {apple=5, banana=3}:apple: 5banana: 3
נסו בעצמכם
function printInventory(inventory)
-- כדי לעצב את הפלט, אפשר לשרשר מחרוזות באמצעות האופרטור '..'.
-- כדי להוסיף שורה חדשה, השתמשו בתו המיוחד '\n'.
-- ייתכן שתצטרכו דרך לעקוב אחר השאלה אם אתם מוסיפים את הפריט הראשון או פריט נוסף
-- כדי להחליט אם להוסיף מעבר שורה לפני הפריט.
-- כתבו כאן קוד
endהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין