Menu
Coddy logo textTech

מבנים לעומת טבלאות לא מובנות

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

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

טבלה חופשית מקבלת כל דבר. לגמישות הזאת יש מחיר: טעות באיות של שדה (user.nmae) תגרום לכך שתקבל בשקט nil; שכחת שדה, והבאג יתגלה הרחק משם, בזמן ריצה, בקוד הראשון שייגע בחור:

local user = {name = "Ana", age = 20}
print(user.nmae) -- טבלה ללא הגדרה קשיחה: מדפיסה nil בלי להתריע

הגדרת צורה מעבירה את הטעויות האלה מזמן הריצה לזמן העריכה. הבודק מסמן את שגיאת ההקלדה ברגע שכתבת אותה, העורך שלך יכול להשלים אוטומטית שמות של שדות, והצהרת type משמשת גם כתיעוד של תוכן הטבלה:

type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ שגיאת טיפוס: המפתח 'nmae' לא נמצא ב-User

אם הגעת מ-TypeScript, שים לב של-Luau אין מילת מפתח interface: type משמשת לכל הצורות. גם אין "מיזוג הצהרות": הצהרה על שני טיפוסים באותו שם באותו תחום היא שגיאה, ולכן לכל צורה יש בדיוק הגדרה אחת.

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

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

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

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

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