טיפוסי חיתוך
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 36 מתוך 80.
איחודים מציינים שערך הוא מסוג אחד או מסוג אחר. טיפוסי חיתוך מצביעים בכיוון ההפוך: האמפרסנד & משלב מבני טבלאות לטיפוס שיש בו את כל השדות של כל אחד מהחלקים:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- ל־Person חייבים להיות שני השדות
local user: Person = {
name = "Alice",
age = 25,
}אם משמיטים את age, הבודק מתלונן: חיתוך הוא "וגם", לעולם לא בחירה בין אפשרויות. כך אפשר לבנות מבנים גדולים מחלקים קטנים שאפשר להשתמש בהם שוב: מגדירים טיפוסים ממוקדים לעניינים נפרדים, ואז מחברים אותם לפי הצורך:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
הערה חשובה לגבי Luau: יש לחתוך מבני טבלאות (וגם טיפוסי פונקציות), לא טיפוסים פרימיטיביים. ביטוי כמו number & string חסר משמעות, כי שום ערך לא יכול להיות משניהם בו-זמנית. כשרוצים "את המבנה הזה יחד עם המבנה ההוא", & הוא הכלי המתאים.
בזמן ריצה, כמובן, Person היא פשוט טבלת Lua רגילה: החיתוך קיים רק עבור הבודק.
אתגר
קלשלב שתי צורות קטנות לצורה אחת.
- כתוב
type HasName = {name: string},type HasAge = {age: number}ו-type Person = HasName & HasAge. - צור
local user: Person = {name = "Omar", age = 31}. - הדפס
`Name: {user.name}, Age: {user.age}`.
לחץ על Run Code: הפלט מציג Name: Omar, Age: 31.
נסו בעצמכם
-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) הדפס את השורה עם השם והגיל
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין