Menu
CoddyTech

איטרציה באמצעות pairs()

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 1 מתוך 54.

כשעובדים עם טבלאות בסגנון מילון ב-Lua, לעיתים קרובות צריך לגשת לכל זוגות המפתח-ערך המאוחסנים בהן. הפונקציה pairs() מאפשרת לעשות זאת על ידי כך שהיא מאפשרת לך לעבור בלולאה על כל הרשומות בטבלה, בלי קשר לסוג המפתחות.התחביר לשימוש ב־pairs() בלולאת for נראה כך:
for key, value in pairs(myTable) do
    -- השתמשו כאן ב-key וב-value
end
בכל איטרציה של הלולאה, pairs() מספקת גם את המפתח וגם את הערך המתאים לו. פירוש הדבר הוא שאפשר לגשת לשני פריטי המידע ולעבוד איתם בו-זמנית.הנה דוגמה מעשית למלאי של שחקן:
local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end
הקוד הזה ידפיס את השם והכמות של כל פריט. הפונקציה pairs() פועלת עם כל סוג של מפתח, כולל מחרוזות, מספרים או אפילו טבלאות אחרות.לאתגר: בניית מחרוזתהאתגר שלהלן מבקש ממך להחזיר כל רשומה כמחרוזת אחת, לכן הנה תזכורת לשני כלים לעבודה עם מחרוזות מתוך יסודות. מחברים מחרוזות באמצעות אופרטור השרשור, שהוא שתי נקודות (..). לדוגמה, "Hello" .. " " .. "World" מחזיר את התוצאה "Hello World".אם צריך לעצב טקסט על פני כמה שורות, אפשר להשתמש בתו המילוט של שורה חדשה, "\n". כש-Lua נתקל ב-"\n" בתוך מחרוזת, הוא מתייחס אליו כאל פקודה לעבור לשורה הבאה.לדוגמה, print("Line 1\nLine 2") יציג:
Line 1
Line 2
challenge icon

אתגר

קל

כתבו פונקציה printInventory שמקבלת טבלת inventory ומחזירה מחרוזת מעוצבת שמפרטת את כל הפריטים ואת הכמויות שלהם.

השתמשו ב־pairs() כדי לעבור על טבלת המלאי ולבנות מחרוזת שבה כל שורה מציגה את שם הפריט ולאחריו את הכמות שלו, בפורמט item: quantity. כל פריט צריך להופיע בשורה נפרדת.

כדי להציג כל פריט בשורה משלו, השתמשו בתו newline "\n" בין הרשומות. לדוגמה, "apple: 5\nbanana: 3" יוצג בשתי שורות נפרדות. הקפידו לא להוסיף "\n" בתחילת המחרוזת לפני הפריט הראשון: הוסיפו אותו רק בין פריטים.

פרמטרים:

  • inventory (table): טבלה בסגנון מילון שבה המפתחות הם שמות הפריטים (מחרוזות) והערכים הם כמויות (מספרים)

ערך מוחזר: מחרוזת שבה כל פריט וכמותו מופיעים בשורה נפרדת, ומופרדים באמצעות "\n". פלט לדוגמה עבור {apple=5, banana=3}:
apple: 5
banana: 3

נסו בעצמכם

function printInventory(inventory)
    -- כדי לעצב את הפלט, אפשר לשרשר מחרוזות באמצעות האופרטור '..'.
    -- כדי להוסיף שורה חדשה, השתמשו בתו המיוחד '\n'.
    -- ייתכן שתצטרכו דרך לעקוב אחר השאלה אם אתם מוסיפים את הפריט הראשון או פריט נוסף
    -- כדי להחליט אם להוסיף מעבר שורה לפני הפריט.
    
    -- כתבו כאן קוד
end
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Lua אונליין