← Усі уроки

Kotlin Fundamentals · Модуль «Функції» · Урок 4 з 8 · ~5 хв

Vararg — довільна кількість аргументів

Остання зупинка перед лямбдами: функції, які приймають «скільки завгодно» аргументів.

1. Модифікатор vararg

vararg дозволяє передати скільки завгодно аргументів одного типу — всередині функції вони доступні як масив:

fun sum(vararg numbers: Int): Int {
    var total = 0
    for (n in numbers) total += n
    return total
}

sum(1, 2, 3)        // 6
sum()                // 0
sum(1, 2, 3, 4, 5)   // 15
vararg-параметр зазвичай ставлять останнім у списку параметрів. Якщо після нього є ще параметри, їх обов'язково потрібно передавати як іменовані аргументи.

2. Spread-оператор *

Щоб передати вміст готового масиву у vararg-параметр, використовують *:

val nums = intArrayOf(1, 2, 3)
sum(*nums)
Без * компілятор спробує передати сам масив як один елемент — і не скомпілюється, якщо типи не збігаються.
Який оператор потрібен, щоб передати елементи наявного масиву у vararg-параметр (а не сам масив цілком)?
Що поверне sum() без жодного аргументу, якщо total ініціалізовано нулем?

🎮 Спробуйте в браузері

Додайте у main ще один виклик sum з довільною кількістю чисел і перевірте, що вивід очікуваний.

Не завантажується? Відкрити напряму →

Це завершує базовий блок. Ви вже вмієте: оголошувати функції, писати їх коротко через вираз, налаштовувати аргументи за замовчуванням та іменовано, приймати змінну кількість аргументів. Далі — функції як значення: лямбди, посилання на функції та функції вищого порядку.

Довідка

Повний синтаксис і глосарій — у довіднику «Функції в Kotlin — шпаргалка».