Получение несоответствия типов для varargs в Kotlin - PullRequest
0 голосов
/ 09 октября 2018

Вот моя простая ситуация в коде

fun receiveDogs(vararg dog: Dog){
    processDogs(dog)
    ... //more cool stuff
}

fun processDogs(vararg dog: Dog){
  .....//cool stuff
}

Когда я делаю это, вызов processDogs(dog) вызывает ошибку компиляции

Несоответствие типов.

Обязательно: Собака

Найдено: Массив <out Dog>

Теперь поймите, что обе мои функции хотят vararg.Есть ли простой способ исправить это?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Согласно документам :

Внутри функции vararg-параметр типа T отображается в виде массива T

Так что вашФункция processDogs должна принимать параметр собак как Array<out T>, или вы можете использовать оператор массива * для массива, чтобы передать его в функцию vararg.

fun processDogs(dogs: Array<Dog>)

или

processDogs(*dog)

как уже упоминалось выше.И компилирует и работает нормально

0 голосов
/ 09 октября 2018

Ох ... вам нужно сделать

processDogs(*dog)

Вам нужно снова распределить массив в vararg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...