Menu
CoddyTech

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

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

ב-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

אתגר

קל

כתבו פונקציה לפרופיל שבה שם התצוגה הוא אופציונלי.

  1. כתבו local function createUserProfile(username: string, displayName: string?): string.
  2. החזירו `Profile: {displayName} (@{username})` כאשר displayName ניתן, אחרת `Profile: @{username}`.
  3. הדפיסו createUserProfile("john_doe", "John Doe") וגם createUserProfile("jane_smith").

לחצו על Run Code: הפלט מציג Profile: John Doe (@john_doe) ו-Profile: @jane_smith.

נסו בעצמכם

-- 1) createUserProfile(username: string, displayName: string?): string
-- 2) הדפס אותו עם שם תצוגה ובלעדיו

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

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