Menu
CoddyTech

מעבר על טבלאות

חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 17 מתוך 80.

כבר ביצעת לולאות על טבלאות Lua פעמים רבות: ב-Luau יש בדיוק אותן לולאות, ונוספים להן טיפוסים למשתני הלולאה. עבור מערכים, ipairs עוברת על האיברים לפי הסדר, מאינדקס 1 ועד #t, ואפשר להוסיף הערות טיפוס לשני המשתנים:

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

זכור ש-ipairs נעצרת באינדקס החסר הראשון: חור של nil באמצע מסיים את הלולאה מוקדם. זו בעיה נדירה במערכים שמתוחזקים היטב, אבל כדאי לדעת על כך.

עבור מפות, השתמש ב-pairs, שעוברת על כל זוגות המפתח והערך: כולל מפתחות מסוג מחרוזת. במפה מסוג {[string]: number}, משתני הלולאה הם מטבעם string ו-number:

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

הסתייגות חשובה: pairs עוברת על המפתחות שבחלק הגיבוב ללא סדר מובטח. הסדר עשוי להשתנות בין הרצות. כשנדרשת לך תוצאה דטרמיניסטית (דוחות ממוינים, בדיקות), אסוף את המפתחות למערך, מיין אותו באמצעות table.sort, ואז עבור על המפתחות הממוינים באמצעות ipairs והשתמש בהם כדי לגשת למפה.

challenge icon

אתגר

קל

הדפיסו שבוע של טמפרטורות ואת הסכום שלהן.

  1. הכריזו על local temps: {number} = {12, 15, 11, 14} ועל local total = 0.
  2. השתמשו בלולאה for day: number, temp: number in ipairs(temps) do, הדפיסו את `Day {day}: {temp}` והוסיפו את temp אל total.
  3. אחרי הלולאה, הדפיסו את total.

לחצו על הרצת קוד: הפלט מציג Day 1: 12 עד Day 4: 14, ואז 52.

נסו בעצמכם

-- 1) להכריז על temps: {number} ועל total = 0
-- 2) לעבור בלולאה עם day ו-temp מוגדרי טיפוס, להדפיס כל יום ולהוסיף ל-total
-- 3) להדפיס את total

כל השיעורים ביחידה מבוא ל-Luau

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