HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: kotlin, котлин, ключевое слово vararg</p>
1 <p>Теги: kotlin, котлин, ключевое слово vararg</p>
2 <p>Как известно, функция способна принимать переменное число параметров одного типа. Чтобы определить такие параметры, применяют<strong>ключевое слово vararg</strong>. К примеру, нужно передать в функцию несколько строк, однако сколько конкретно строк, нам точно неизвестно, ведь их может быть, к примеру, пять, шесть и более.</p>
2 <p>Как известно, функция способна принимать переменное число параметров одного типа. Чтобы определить такие параметры, применяют<strong>ключевое слово vararg</strong>. К примеру, нужно передать в функцию несколько строк, однако сколько конкретно строк, нам точно неизвестно, ведь их может быть, к примеру, пять, шесть и более.</p>
3 <p>Итак, в нашем примере функция<strong>printStrings</strong>принимает неопределенное число строк. В самой функции мы сможем работать с параметром как с последовательностью строк, к примеру, мы сможем перебирать элементы последовательности в цикле и выполнять с ними определенные действия.</p>
3 <p>Итак, в нашем примере функция<strong>printStrings</strong>принимает неопределенное число строк. В самой функции мы сможем работать с параметром как с последовательностью строк, к примеру, мы сможем перебирать элементы последовательности в цикле и выполнять с ними определенные действия.</p>
4 <p>При этом в случае вызова функции мы сможем передать ей любое число строк.</p>
4 <p>При этом в случае вызова функции мы сможем передать ей любое число строк.</p>
5 <p>Еще один пример -- это подсчет суммы неопределенного количества чисел:</p>
5 <p>Еще один пример -- это подсчет суммы неопределенного количества чисел:</p>
6 <p>Обратите внимание, что когда функция принимает несколько параметров, то, как правило,<strong>vararg</strong>-параметр является последним.</p>
6 <p>Обратите внимание, что когда функция принимает несколько параметров, то, как правило,<strong>vararg</strong>-параметр является последним.</p>
7 <p>Но это не является обязательным. Но учтите, что если после<strong>vararg-параметра</strong>идут какие-либо еще параметры, то в момент вызова функции этим параметрам передаются значения с помощью именованных аргументов:</p>
7 <p>Но это не является обязательным. Но учтите, что если после<strong>vararg-параметра</strong>идут какие-либо еще параметры, то в момент вызова функции этим параметрам передаются значения с помощью именованных аргументов:</p>
8 <p>В этом случае функция<strong>printUserGroup</strong>принимает 3 параметра. Передача значений параметрам до vararg-параметра осуществляется по позициям. Таким образом, в нашем примере "KT-091" -- это значение для group-параметра. Дальнейшие значения интерпретируются в качестве значений для vararg-параметра вплоть до именованных аргументов.</p>
8 <p>В этом случае функция<strong>printUserGroup</strong>принимает 3 параметра. Передача значений параметрам до vararg-параметра осуществляется по позициям. Таким образом, в нашем примере "KT-091" -- это значение для group-параметра. Дальнейшие значения интерпретируются в качестве значений для vararg-параметра вплоть до именованных аргументов.</p>
9 <h2>Оператор<strong>*</strong></h2>
9 <h2>Оператор<strong>*</strong></h2>
10 <p>Spread operator -- он же оператор * (не путайте его со знаком умножения) дает возможность передавать параметру в виде значения элементы из массива:</p>
10 <p>Spread operator -- он же оператор * (не путайте его со знаком умножения) дает возможность передавать параметру в виде значения элементы из массива:</p>
11 <p>Отдельного упоминания заслуживает звездочка, используемая перед nums при вызове функции: changeNumbers(<strong>*nums</strong>, koef=2). Если этот оператор не был бы применен, мы бы получили ошибку, так как параметры функции представляют собой не массив, а неопределенное число значений типа Int.</p>
11 <p>Отдельного упоминания заслуживает звездочка, используемая перед nums при вызове функции: changeNumbers(<strong>*nums</strong>, koef=2). Если этот оператор не был бы применен, мы бы получили ошибку, так как параметры функции представляют собой не массив, а неопределенное число значений типа Int.</p>
12 <p><em>По материалам<a>https://metanit.com/</a>.</em></p>
12 <p><em>По материалам<a>https://metanit.com/</a>.</em></p>
13  
13