Menu
Coddy logo textTech

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

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

כבר ביצעת לולאות על טבלאות 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

אתגר

קל

צרו מערך מטיפוס מוגדר temps: {number} שמאותחל בערכים 18, 21, 19 ו-24.

עברו עליו בלולאה באמצעות ipairs, והוסיפו הצהרות טיפוס לשני משתני הלולאה (day: number, temp: number). עבור כל איבר הדפיסו בדיוק:

Day 1: 18

(באמצעות אינטרפולציית מחרוזות עם backticks), והוסיפו כל טמפרטורה לסכום מצטבר.

לאחר הלולאה, הדפיסו את הסכום בשורה נפרדת.

נסו בעצמכם

-- כתבו כאן את הקוד
-- 1) הכריזו על temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
--    הדפיסו `Day {day}: {temp}` והוסיפו את הערך ל-total
-- 3) הדפיסו את הסכום הכולל אחרי הלולאה
quiz iconבחנו את עצמכם

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

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

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