Ключевое слово Vararg в Kotlin
Как известно, функция способна принимать переменное число параметров одного типа. Чтобы определить такие параметры, применяют ключевое слово vararg. К примеру, нужно передать в функцию несколько строк, однако сколько конкретно строк, нам точно неизвестно, ведь их может быть, к примеру, пять, шесть и более.
Итак, в нашем примере функция printStrings принимает неопределенное число строк. В самой функции мы сможем работать с параметром как с последовательностью строк, к примеру, мы сможем перебирать элементы последовательности в цикле и выполнять с ними определенные действия.
При этом в случае вызова функции мы сможем передать ей любое число строк.
Еще один пример -- это подсчет суммы неопределенного количества чисел:
Обратите внимание, что когда функция принимает несколько параметров, то, как правило, vararg-параметр является последним.
Но это не является обязательным. Но учтите, что если после vararg-параметра идут какие-либо еще параметры, то в момент вызова функции этим параметрам передаются значения с помощью именованных аргументов:
В этом случае функция printUserGroup принимает 3 параметра. Передача значений параметрам до vararg-параметра осуществляется по позициям. Таким образом, в нашем примере "KT-091" -- это значение для group-параметра. Дальнейшие значения интерпретируются в качестве значений для vararg-параметра вплоть до именованных аргументов.
Оператор *
Spread operator -- он же оператор
Отдельного упоминания заслуживает звездочка, используемая перед nums при вызове функции: changeNumbers(*nums, koef=2). Если этот оператор не был бы применен, мы бы получили ошибку, так как параметры функции представляют собой не массив, а неопределенное число значений типа Int.
По материалам https://metanit.com/.