Для List[A]
, flatMap
ожидает функцию от A => GenTraversableOnce[B]
. Проблема с использованием List.apply
в этом конкретном синтаксисе заключается в том, что apply
допускает повторяющиеся параметры A*
, который является синтаксическим сахаром для Seq[A]
. Так что List.apply
действительно Seq[A] => List[A]
, что не то же самое, что и A => List[A]
. И мы видим, что в сообщении об ошибке:
scala> l.flatMap(List.apply)
<console>:9: error: polymorphic expression cannot be instantiated to expected type;
found : [A]Seq[A] => List[A]
required: Int => scala.collection.GenTraversableOnce[?]
l.flatMap(List.apply)
Что вы можете сделать, это понять, что вы используете только один параметр:
scala> l.flatMap(List(_))
res5: List[Int] = List(1, 2, 3)
scala> l.flatMap(List.apply(_))
res6: List[Int] = List(1, 2, 3)
И l.flatMap(List)
никогда не мог работать, потому что List
является класс, и Scala не будет обрабатывать его с помощью сахара apply
для получения l.flatMap(List.apply)
.