איטרציה באמצעות 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() פועלת עם כל סוג של מפתח, כולל מחרוזות, מספרים או אפילו טבלאות אחרות.עבודה עם מחרוזותב-Lua, אפשר לחבר מחרוזות באמצעות אופרטור השרשור, שהוא שתי נקודות (..). לדוגמה, "Hello" .. " " .. "World" מחזיר את "Hello World".אם צריך לעצב טקסט על פני כמה שורות, אפשר להשתמש בתו הבריחה של שורה חדשה, "\n". כש-Lua נתקל ב-"\n" בתוך מחרוזת, הוא מתייחס אליו כאל הוראה לעבור לשורה הבאה.לדוגמה, print("Line 1\nLine 2") יציג:Line 1
Line 2אתגר
קלכתוב פונקציה printInventory שמקבלת טבלת inventory ומחזירה מחרוזת מעוצבת שמפרטת את כל הפריטים ואת הכמויות שלהם.
השתמש ב־pairs() כדי לעבור על טבלת המלאי ולבנות מחרוזת שבה כל שורה מציגה שם של פריט ואחריו הכמות שלו בפורמט item: quantity. כל פריט צריך להופיע בשורה נפרדת.
כדי להציג כל פריט בשורה משלו, השתמש בתו של שורה חדשה "\n" בין הרשומות. לדוגמה, "apple: 5\nbanana: 3" יוצג כשתי שורות נפרדות. הקפד לא להוסיף "\n" מוביל לפני הפריט הראשון: הוסף אותו רק בין הפריטים.
פרמטרים:
inventory(טבלה): טבלה בסגנון מילון, שבה המפתחות הם שמות של פריטים (מחרוזות) והערכים הם הכמויות (מספרים)
ערך מוחזר: מחרוזת שבה כל פריט והכמות שלו מופיעים בשורה נפרדת, כשהשורות מופרדות באמצעות "\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 אונליין