ערכי ברירת מחדל לפרמטרים
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 26 מתוך 73.
פרמטרים אופציונליים משאירים לך ערך nil לטיפול. לעיתים קרובות, מה שבאמת דרוש לך הוא ערך חלופי: "אם מי שקרא לפונקציה לא ציין, נניח X". ל-Luau אין תחביר לברירת מחדל בחתימה (אין greeting: string = "Hello"); במקום זאת משתמשים באידיומה הקלאסית של Lua, כעת עם טיפוסים:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, Alice
print(greet("Alice", "Howdy")) -- אהלן, אליסהפרמטר מסומן כאופציונלי (string?), והשורה הראשונה בגוף הפונקציה מחליפה את nil בערך ברירת המחדל. זה עובד כי nil הוא ערך שקרי: הביטוי nil or "Hello" מחזיר את הערך "Hello". אחרי השורה הזאת, הבודק יודע ש-greeting כבר לא יכול להיות nil.
הסתייגות אחת, המוכרת לך מ-Lua: or מחליף גם את false! עבור פרמטר מסוג boolean?, הביטוי flag = flag or true ידרוס בשקט ערך false מפורש. במקום זאת, השתמש בבדיקת nil מפורשת:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endאתגר
קלצרי פונקציה בשם calculateTax שמקבלת price: number (נדרש) ו-rate: number?, עם ערך ברירת מחדל 0.05. החזירי את סכום המס (price * rate) בתור number.
צרי פונקציה בשם formatGreeting שמקבלת name: string (נדרש) ו-timeOfDay: string?, עם ערך ברירת מחדל "Hello". החזירי "[timeOfDay], [name]!" בתור string.
צרי פונקציה בשם calculateShipping שמקבלת weight: number, distance: number (שניהם נדרשים) ו-expedited: boolean?, עם ערך ברירת מחדל false: עבור זה השתמשי בבדיקת nil מפורשת! חשבי את (weight * 0.5) + (distance * 0.1), ואם expedited הוא true, הכפילי את התוצאה ב-2. החזירי number.
קראי לפונקציות והדפיסי, כל אחת בשורה נפרדת:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
נסו בעצמכם
-- כתבו כאן קוד
-- calculateTax(price: number, rate: number?) -- ערך ברירת המחדל של rate הוא 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- ערך ברירת המחדל הוא "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- ערך ברירת המחדל הוא false
-- לאחר מכן הדפיסו את שש התוצאות
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
טיפוסים בסיסיים: num, str, boolהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוסים מפורשותסיכום: תרגול טיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספת איברים וקריאתםמהו טיפוס Map?הצהרה על מפות וגישה אליהןמעבר על טבלאותטבלאות בעלות מבנים מעורביםמערכים רב־ממדיים מטיפוס מוגדרtable.unpack ו־Varargsסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין