Scala не может приводить типы. Publisher [Publisher [_ <: T]] не может применяться к - PullRequest
0 голосов
/ 07 января 2019

Я реализовал простые потоки в Scala с реализацией потока Project Reactor.

  val iterators: Iterable[Flux[String]] = for (i <- 0 to 4000) yield Flux.interval(5 seconds).map(_.toString)
  val publishers: Flux[Flux[String]] = Flux.just(iterators).flatMapIterable(identity)
  Flux.merge(publishers, 1)

Пытался скомпилировать этот код, но получил ошибку

Error:(156, 8) overloaded method value merge with alternatives:
  [I](prefetch: Int, sources: org.reactivestreams.Publisher[_ <: I]*)reactor.core.scala.publisher.Flux[I] <and>
  [I](sources: org.reactivestreams.Publisher[_ <: I]*)reactor.core.scala.publisher.Flux[I] <and>
  [T](source: org.reactivestreams.Publisher[org.reactivestreams.Publisher[_ <: T]], concurrency: Int)reactor.core.scala.publisher.Flux[T]
 cannot be applied to (reactor.core.scala.publisher.Flux[reactor.core.scala.publisher.Flux[String]], Int)

Почему Скала не может использовать эти типы?

Flux.merge(publishers) работает хорошо, но когда я передаю целочисленный аргумент, компилятор scala завершается с ошибкой.

...