מערכים גנריים
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 64 מתוך 80.
גנריים נעשים שימושיים מאוד כשעובדים עם טבלאות. כבר כותבים מערכים מטופסים כך: {number} או {string}. בתוך פונקציה גנרית, סוג האיבר יכול להיות פשוט T, ו-{T} פירושו "מערך של כל סוג שיתברר ש-T הוא".
הנה הדוגמה הקלאסית: שליפת האיבר הראשון מכל מערך:
local function first<T>(items: {T}): T?
return items[1]
endמעבירים {string} ובודק הטיפוסים מסיק ש-T = string, ולכן התוצאה היא מחרוזת. מעבירים {number} והתוצאה היא מספר. פונקציה אחת מחליפה משפחה שלמה של עותקים, אחד לכל סוג.
שימו לב היטב לסוג ההחזרה: הוא T?, ולא T. מערך יכול להיות ריק, ואז items[1] הוא nil: הסוג האופציונלי שפגשתם קודם מציין זאת בכנות: "T או nil". בודק הטיפוסים ינחה את מי שקוראים לפונקציה לטפל במקרה של nil לפני השימוש בתוצאה, וכך בדיוק תופסים באגים בשפה מטופסת.
אתגר
קלקבלו את האיבר הראשון מכל מערך.
- כתבו
local function first<T>(items: {T}): T?שמחזירה אתitems[1]. - הכריזו על
local fruits: {string} = {"apple", "banana"}ועלlocal empty: {number} = {}. - הדפיסו את
first(fruits), ואז אתfirst(empty).
לחצו על הרצת קוד: הפלט מציג את apple ואת nil.
נסו בעצמכם
-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string} ו-{number} ריק
-- 3) הדפיסו את first של כל אחד מהם
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפות6הוספת טיפוסים למבני טבלה
הערות טיפוס בשורה למבניםכינויי טיפוס למבניםמאפיינים אופציונלייםמבנים לעומת טבלאות לא מובנותהרחבת מבניםהוספת מתודות למבניםSelf ומתודות עם נקודתייםסיכום: הגדרת מבני טבלה9מבט ראשון על טיפוסים גנריים
הבעיה שטיפוסים גנריים פותריםפונקציית זהות גנריתשימוש בפונקציה גנריתמערכים גנרייםכינויי טיפוס גנרייםסיכום: פונקציות גנריותתרגלו בעצמכם: קומפיילר Luau אונליין