Menu
Coddy logo textTech

פונקציות עם מספר משתנה של ארגומנטים

חלק מהיחידה מבוא ל-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
challenge icon

אתגר

קל

צרו פונקציה בשם sumAll שמקבלת מספר כלשהו של ארגומנטים מסוג number (...: number) ומחזירה את הסכום שלהם בתור number.

צרו פונקציה בשם countValues שמקבלת מספר כלשהו של ארגומנטים מסוג string ומחזירה בתור number כמה ארגומנטים הועברו: השתמשו ב-select("#", ...).

צרו פונקציה בשם joinWords שמקבלת separator: string נדרש ואחריו מספר כלשהו של ארגומנטים מסוג string, ומחזירה אותם מחוברים באמצעות המפריד (השתמשו ב-table.concat עם {...}): סוג הערך המוחזר הוא string.

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

  1. sumAll(5, 10, 15)
  2. sumAll(1, 2, 3, 4, 5)
  3. countValues("a", "b", "c", "d")
  4. joinWords("-", "apple", "banana", "cherry")
  5. joinWords(" | ", "red", "green", "blue")

נסו בעצמכם

-- כתבו כאן קוד
-- sumAll(...: number): number       -- עברו בלולאה על {...}
-- countValues(...: string): number  -- select("#", ...)
-- joinWords(separator: string, ...: string): string
-- לאחר מכן הדפיסו את חמש התוצאות
quiz iconבחנו את עצמכם

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

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

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