Menu
Coddy logo textTech

הרחבת מבנים

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

לעיתים קרובות, לצורות קשורות יש שדות משותפים. כל 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

אתגר

קל

צרו את כינויי הטיפוס הבאים:

  • Employee: id (number), name (string), department (string)
  • Manager: הרחבה של Employee (באמצעות &) עם teamSize (number)
  • Contact: email (string)
  • Developer: החיתוך של Employee, Contact ו-{yearsExperience: number}

צרו:

  • את teamLead מטיפוס Manager: מזהה 101, שם "Alice Johnson", מחלקה "Engineering", גודל צוות 8
  • את dev מטיפוס Developer: מזהה 102, שם "Bob Smith", מחלקה "Engineering", דוא"ל "bob@company.com", שנות ניסיון 5

צרו פונקציה בשם getManagerSummary שמקבלת Manager ומחזירה [name] manages [teamSize] people.

הדפיסו, כל אחד בשורה נפרדת:

  1. את התוצאה של getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience עבור dev
  3. את המחלקה של teamLead
  4. את כתובת הדוא"ל של dev

נסו בעצמכם

-- כתבו כאן קוד
-- 1) הגדירו את Employee, ואז את Manager / Contact / Developer באמצעות &
-- 2) צרו את teamLead ואת dev
-- 3) כתבו את getManagerSummary
-- 4) הדפיסו את ארבע השורות המבוקשות
quiz iconבחנו את עצמכם

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

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

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