Akka stream 如何将流[T,Seq[Seq[String]],NotUsed]展平为流[T,Seq[String],NotUsed]
我有一个Flow[T,Seq[Seq[String]]类型的流,NotUsed] 我想用示例流所显示的方式将其展平Akka stream 如何将流[T,Seq[Seq[String]],NotUsed]展平为流[T,Seq[String],NotUsed],akka-stream,Akka Stream,我有一个Flow[T,Seq[Seq[String]]类型的流,NotUsed] 我想用示例流所显示的方式将其展平 ev1: Seq(Seq("a", "b"), Seq("n", "m") ev2: Seq(Seq("x", "y")) 应成为以下流: ev1: Seq("a", "b") ev2: Seq("n", "m") ev3: Seq("x", "y") 使用mapConcat(标识): 印刷品 Vector(1, 2) Vector(3, 4) Vector(5, 6) 一般
ev1: Seq(Seq("a", "b"), Seq("n", "m")
ev2: Seq(Seq("x", "y"))
应成为以下流:
ev1: Seq("a", "b")
ev2: Seq("n", "m")
ev3: Seq("x", "y")
使用mapConcat(标识)
:
印刷品
Vector(1, 2)
Vector(3, 4)
Vector(5, 6)
一般来说,使用
mapConcat
可以将事件序列展平到主流。但仍然想知道为什么这不适用于Seq,而只适用于Vector@spaudanjo由于类型不匹配,scala.Seq
,即scala.collection.Seq
,它不起作用Source.apply
要求其参数为scala.collection.immutable.Iterable
,当然scala.collection.Seq
,不能保证是不可变的,它不是scala.collection.immutable.Iterable
的子类型,而实际上是不可变的Vector
。例如,它还可以与列表
一起使用;只是默认情况下,我通常在任何地方都使用Vector
。
Vector(1, 2)
Vector(3, 4)
Vector(5, 6)