Я считаю, что это потому, что вы не можете превратить массив в массив, но вы можете преобразовать последовательность в массив.Метод хочет последовательность, которую он может использовать для создания массива.
Суть в том, чтобы проверить сигнатуры метода и не угадать, что они основаны на имени метода.
Важная часть такова:
found : [B >: Product with Serializable with Either[Int,java.lang.String]]Array[B]
required: Seq[Either[Int,String]]
f(List(Left(0), Right("a")).iterator.toArray)
toArray
метод хочет Seq (поэтому список будет в порядке) и возвращает массив.Вы передали ему массив, и он не знает, что делать.Либо сначала сделайте Array в Seq, либо просто полностью пропустите метод toArray
.
Если вы вернетесь на один шаг назад, станет ясно, что метод iterator
берет ваш List и возвращает массив.Каждый вызов метода является вызовом функции.