Menu
Coddy logo textTech

פרמטרים אופציונליים

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

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

function greet(name: string, title: string?): string
    if title then
        return `{title} {name}`
    end
    return `Hello, {name}`
end

print(greet("Ada"))          -- שלום, Ada
print(greet("Ada", "Dr."))   -- Dr. Ada

string? נקרא "string או nil". הקוראים יכולים להעביר מחרוזת או לדלג על הארגומנט לגמרי; פרמטרים ללא ? הם חובה, והבודק מסמן קריאות שמשמיטות אותם.

בתוך הפונקציה, פרמטר אופציונלי עשוי להיות nil, לכן צריך לבדוק אותו לפני שמשתמשים בו: if title then ... end היא התבנית המקובלת. אם מדלגים על הבדיקה ומשלבים את nil במחרוזת, מתקבלת אותה שגיאת זמן ריצה ש-Lua תמיד הציגה; בודק הטיפוסים מזהיר אותך מראש.

challenge icon

אתגר

קל

צרו פונקציה בשם createUserProfile שמקבלת username: string (חובה) ו-displayName: string? (אופציונלי), ומחזירה string:

  • כאשר שניהם מסופקים, החזירו: "Profile: [displayName] (@[username])"
  • כאשר מסופק רק שם המשתמש, החזירו: "Profile: @[username]"

צרו פונקציה בשם calculateDiscount שמקבלת price: number (חובה) ו-membershipLevel: string? (אופציונלי), ומחזירה number:

  • כאשר מסופקת רמת חברות, החזירו את המחיר לאחר הפחתה של 10% (כפלו ב-0.9)
  • אחרת, החזירו את המחיר ללא שינוי

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

  1. createUserProfile("john_doe", "John Doe")
  2. createUserProfile("jane_smith")
  3. calculateDiscount(100, "premium")
  4. calculateDiscount(75)

נסו בעצמכם

-- כתבו כאן קוד
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- לאחר מכן הדפיסו את ארבע התוצאות
quiz iconבחנו את עצמכם

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

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

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