Ключевое слово Vararg в Kotlin | OTUS

Ключевое слово Vararg в Kotlin

Как известно, функция способна принимать переменное число параметров одного типа. Чтобы определить такие параметры, применяют ключевое слово vararg. К примеру, нужно передать в функцию несколько строк, однако сколько конкретно строк, нам точно неизвестно, ведь их может быть, к примеру, пять, шесть и более.

1-1801-4c645a.png

Итак, в нашем примере функция printStrings принимает неопределенное число строк. В самой функции мы сможем работать с параметром как с последовательностью строк, к примеру, мы сможем перебирать элементы последовательности в цикле и выполнять с ними определенные действия.

При этом в случае вызова функции мы сможем передать ей любое число строк.

Еще один пример -- это подсчет суммы неопределенного количества чисел:

2-1801-ab98aa.png

Обратите внимание, что когда функция принимает несколько параметров, то, как правило, vararg-параметр является последним.

3-1801-efd679.png

Но это не является обязательным. Но учтите, что если после vararg-параметра идут какие-либо еще параметры, то в момент вызова функции этим параметрам передаются значения с помощью именованных аргументов:

4-1801-543620.png

В этом случае функция printUserGroup принимает 3 параметра. Передача значений параметрам до vararg-параметра осуществляется по позициям. Таким образом, в нашем примере "KT-091" -- это значение для group-параметра. Дальнейшие значения интерпретируются в качестве значений для vararg-параметра вплоть до именованных аргументов.

Оператор *

Spread operator -- он же оператор * (не путайте его со знаком умножения) дает возможность передавать параметру в виде значения элементы из массива:

5-1801-c546c7.png

Отдельного упоминания заслуживает звездочка, используемая перед nums при вызове функции: changeNumbers(*nums, koef=2). Если этот оператор не был бы применен, мы бы получили ошибку, так как параметры функции представляют собой не массив, а неопределенное число значений типа Int.

По материалам https://metanit.com/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться