פונקציות עם מספר משתנה של ארגומנטים
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 27 מתוך 73.
השתמשת ב־... של Lua (ארגומנטים משתנים) כדי לכתוב פונקציות שמקבלות מספר כלשהו של ארגומנטים. Luau מאפשרת לך לטיפוס את הארגומנטים המשתנים, כך שכל ארגומנט שמועבר נבדק:
function sum(...: number): number
local total = 0
for _, n in ipairs({...}) do
total = total + n
end
return total
end
print(sum(1, 2)) -- 3
print(sum(1, 2, 3, 4, 5)) -- 15...: number מצהיר שכל ארגומנט נוסף חייב להיות מספר: sum(1, "two") הופך לשגיאת טיפוס. כלי זמן הריצה הם אלה שכבר מוכרים לך:
{...}אוסף את הארגומנטים המשתנים למערך (כאן{number})select("#", ...)סופר כמה ארגומנטים התקבלו- אפשר להעביר את
...ישירות לפונקציה אחרת, למשלmath.max(...)
כמו ב־Lua, ... חייב להיות הפרמטר האחרון: הפרמטרים הרגילים (עם טיפוסים) באים ראשונים, והזנב המשתנה אוסף את השאר:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cאתגר
קלצרו פונקציה בשם sumAll שמקבלת מספר כלשהו של ארגומנטים מסוג number (...: number) ומחזירה את הסכום שלהם בתור number.
צרו פונקציה בשם countValues שמקבלת מספר כלשהו של ארגומנטים מסוג string ומחזירה בתור number כמה ארגומנטים הועברו: השתמשו ב-select("#", ...).
צרו פונקציה בשם joinWords שמקבלת separator: string נדרש ואחריו מספר כלשהו של ארגומנטים מסוג string, ומחזירה אותם מחוברים באמצעות המפריד (השתמשו ב-table.concat עם {...}): סוג הערך המוחזר הוא string.
קראו לכל פונקציה והדפיסו את התוצאה, כל אחת בשורה נפרדת:
sumAll(5, 10, 15)sumAll(1, 2, 3, 4, 5)countValues("a", "b", "c", "d")joinWords("-", "apple", "banana", "cherry")joinWords(" | ", "red", "green", "blue")
נסו בעצמכם
-- כתבו כאן קוד
-- sumAll(...: number): number -- עברו בלולאה על {...}
-- countValues(...: string): number -- select("#", ...)
-- joinWords(separator: string, ...: string): string
-- לאחר מכן הדפיסו את חמש התוצאות
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
טיפוסים בסיסיים: num, str, boolהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוסים מפורשותסיכום: תרגול טיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספת איברים וקריאתםמהו טיפוס Map?הצהרה על מפות וגישה אליהןמעבר על טבלאותטבלאות בעלות מבנים מעורביםמערכים רב־ממדיים מטיפוס מוגדרtable.unpack ו־Varargsסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין