חתימות אינדקס
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 78 מתוך 80.
כבר פגשתם טיפוסי מפה כמו {[string]: number} בפרק הטבלאות: חתימת אינדקס: כל מפתח מסוג מחרוזת ממופה לערך מסוג מספר. הם שימושיים כשהמפתחות אינם ידועים בזמן כתיבת הקוד: מונים, הגדרות, מטמונים, ניקוד — כל דבר שנבנה בזמן הריצה.
type Counts = {[string]: number}
local counts: Counts = {}
counts["potion"] = 3 -- מותר להשתמש בכל מפתח מסוג מחרוזת
counts["sword"] = 1
counts["potion"] += 1 -- הערכים נבדקים כמספריםשתי עובדות על זמן הריצה חשובות כשעובדים עם מפות. ראשית, קריאה של מפתח שלא הוגדר מעולם מחזירה nil: תבנית הספירה הקלאסית מטפלת בכך באמצעות or, והופכת ערך "חסר" ל־0:
counts[item] = (counts[item] or 0) + 1שנית, pairs() עוברת על מפתחות המפה ללא סדר מובטח: בהרצות שונות של אותה תוכנית ייתכן שהמפתחות יופיעו בסדר שונה. בכל פעם שהפלט חייב להיות צפוי, אספו את המפתחות למערך, מיינו אותם באמצעות table.sort, ועברו במקום זאת על המערך הממוין:
local keys: {string} = {}
for key in pairs(counts) do
table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
print(`{key}: {counts[key]}`)
endאתגר
קלשמרו ניקוד לשחקנים ששמותיהם אינם ידועים לכם מראש.
- כתבו
type Scores = {[string]: number}וצרוlocal scores: Scores = {}. - הוסיפו נקודות:
scores["mia"] = (scores["mia"] or 0) + 5, ואז עשו אותו הדבר עבור"leo"עם3. - הדפיסו את
scores["mia"], אתscores["leo"]ואתscores["zed"].
לחצו על הרצת קוד: הפלט מציג 5, 3 ו-nil.
נסו בעצמכם
-- 1) type Scores = {[string]: number}, ואז local scores: Scores = {}
-- 2) הוסיפו 5 נקודות ל-"mia" ו-3 ל-"leo"
-- 3) הדפיסו את mia, leo ו-zed
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין