פונקציות עם מספר משתנה של ארגומנטים
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 29 מתוך 80.
השתמשת ב־... של 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אתגר
קלכתבו שתי פונקציות שמקבלות מספר כלשהו של ארגומנטים.
- כתבו
local function sumAll(...: number): numberשמחברת את הערכים ב־{...}באמצעותipairs. - כתבו
local function joinWords(separator: string, ...: string): stringשמחזירה אתtable.concat({...}, separator). - הדפיסו את
sumAll(5, 10, 15)ואתjoinWords("-", "apple", "banana", "cherry").
לחצו על הרצת קוד: הפלט מציג 30 ו־apple-banana-cherry.
נסו בעצמכם
-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) הדפס את שתי התוצאות
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין