Menu
CoddyTech

הרחבת מבנים

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

לצורות קשורות יש לעיתים קרובות שדות משותפים. כל Admin הוא גם User; העתקת השדות המשותפים לשתי ההצהרות עלולה לגרום להן להתפצל.

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

type User = {name: string, age: number}
type Admin = User & {level: number}

-- Admin דורש כעת: name, age וגם level
local root: Admin = {name = "Root", age = 35, level = 9}

בעוד ש-TypeScript זקוק למילת המפתח הנפרדת extends עבור ממשקים, ב-Luau לא צריך שום דבר חדש: חיתוכים כבר עושים את העבודה. אפשר לשרשר כמה חלקים:

type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}

אל תבלבל בין & לבין |: איחוד A | B הוא אחת משתי הצורות, בעוד שחיתוך A & B חייב להתאים לשתיהן בו-זמנית. ומכיוון של-Admin יש את כל השדות של User, אפשר להעביר ערך מסוג Admin לכל מקום שבו מצפים ל-User.

challenge icon

אתגר

קל

הרחב מבנה של עובד למבנה של מנהל.

  1. כתוב type Employee = {name: string, department: string} ו-type Manager = Employee & {teamSize: number}.
  2. צור local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}.
  3. הדפס `{teamLead.name} manages {teamLead.teamSize} people`, ואז teamLead.department.

לחץ על הרצת קוד: הפלט מציג Alice Johnson manages 8 people ו-Engineering.

נסו בעצמכם

-- 1) הגדירו type Employee, ואז type Manager = Employee & {...}
-- 2) הגדירו local teamLead: Manager = {...}
-- 3) הדפיסו את שורת הסיכום, ואז את המחלקה

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

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