Menu
Coddy logo textTech

טיפוסי חיתוך

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

איחוד מציין שערך הוא מסוג אחד או מסוג אחר. טיפוסי חיתוך פועלים בכיוון ההפוך: האמפרסנד & משלב מבני טבלאות לטיפוס שיש לו את כל השדות של כל חלק:

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 רגילה: החיתוך קיים רק עבור הבודק.

challenge icon

אתגר

קל

צור שני כינויי טיפוס: HasName עם שדה name: string, ו־HasAge עם שדה age: number.

צור את Person כחיתוך של HasName & HasAge.

צור את HasEmail עם שדה email: string, ואת Employee כחיתוך של שלושתם: HasName & HasAge & HasEmail.

הכרז על:

  • user: Person עם השם "Alice" והגיל 25
  • worker: Employee עם השם "Bob", הגיל 30 והדוא״ל "bob@company.com"

צור את displayPerson(person: Person): string שמחזירה "Name: [name], Age: [age]", ואת displayEmployee(employee: Employee): string שמחזירה "Name: [name], Age: [age], Email: [email]".

הדפס את displayPerson(user) ואת displayEmployee(worker) בשורות נפרדות.

נסו בעצמכם

-- כתבו כאן קוד
-- type HasName = { name: string }, HasAge, HasEmail
-- type Person = HasName & HasAge
-- type Employee = HasName & HasAge & HasEmail
-- הכריזו על user ועל worker, כתבו את שתי פונקציות התצוגה,
-- הדפיסו את displayPerson(user) ואת displayEmployee(worker)
quiz iconבחנו את עצמכם

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

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

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