Scala 无法转换类型 Publisher[Publisher[_ <: T]] 无法应用于 (Flux[Flux[String]]
Scala can't cast types Publisher[Publisher[_ <: T]] cannot be applied to (Flux[Flux[String]]
我使用 Project Reactor 流实现在 Scala 中实现了简单的流。
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)
为什么 scala 不能转换这些类型?
Flux.merge(publishers)
运行良好,但是当我传递整数参数时,scala 编译器失败并出现错误。
如果您使用的是 reactor-scala-extensions,这是一个将在 0.4.8 中修复的错误
我使用 Project Reactor 流实现在 Scala 中实现了简单的流。
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)
为什么 scala 不能转换这些类型?
Flux.merge(publishers)
运行良好,但是当我传递整数参数时,scala 编译器失败并出现错误。
如果您使用的是 reactor-scala-extensions,这是一个将在 0.4.8 中修复的错误