如何传递前一阶段Akka溪流中的参数?

如何传递前一阶段Akka溪流中的参数?,akka,akka-stream,Akka,Akka Stream,我在玩Akka Streams,对通过带参数的函数构造流感到好奇。参数应从前一个流阶段传递 假设我们有以下输入和输出: case类InitElement(v:Int) 特征流结果 case类StageA(v:Int)扩展StreamResult 案例类StageB(v:Int)扩展了StreamResult trait StreamFailure扩展StreamResult{val msg:String} case类stageafilure(msg:String)扩展了StreamFailure

我在玩Akka Streams,对通过带参数的函数构造
流感到好奇。参数应从前一个流阶段传递

假设我们有以下输入和输出:

case类InitElement(v:Int)
特征流结果
case类StageA(v:Int)扩展StreamResult
案例类StageB(v:Int)扩展了StreamResult
trait StreamFailure扩展StreamResult{val msg:String}
case类stageafilure(msg:String)扩展了StreamFailure
案例类StageBFailure(msg:String)扩展了StreamFailure
它们的流阶段如下所示:

val stageA=Flow[InitElement].map{
初始化=>
如果(初始电压>10)
阶段(初始v)
其他的
StageAFailure(s“${init.v}小于10”)
}
def stageB(输入:StreamResult)(外部服务:Set[Int])=Flow[StreamResult].map{
案例失败:StreamFailure=>failure
案例阶段a(v)=>
if(externalService.contains(v))
第四阶段(五)
其他的
StageB故障(s“$v在外部服务中不存在”)
}
val graph=Source.single(InitElement(12))
.via(stageA)
//如何将前一阶段的输出传递到“stageB”函数?
.via(stageB(u2;)(集合(11,15,20)))
.toMat(沉头)(保持右侧)
我看不到任何方法可以将
stageA
的结果传递到构建下一阶段的函数中


如何实现这一点?

您对
stageB
的定义构建了一个
Flow[StreamResult,StreamResult,.
。它不需要将
(输入:StreamResult)
作为参数。请注意,在
stageB
定义中的任何位置都不使用
input
。元素来自
流[StreamResult]
,您将
映射到该流上

这就足够了:

def stageB(externalService: Set[Int]) = … // As you wrote it

val graph = Source.single(InitElement(12))
  .via(stageA)
  .via(stageB(Set(11, 15, 20)))
  .toMat(Sink.head)(Keep.right)

您对
stageB
的定义构建了一个
Flow[StreamResult,StreamResult,u]
。它不需要将
(输入:StreamResult)
作为参数。请注意,在
stageB
定义中的任何位置都不使用
input
。元素来自
流[StreamResult]
,您将
映射到该流上

这就足够了:

def stageB(externalService: Set[Int]) = … // As you wrote it

val graph = Source.single(InitElement(12))
  .via(stageA)
  .via(stageB(Set(11, 15, 20)))
  .toMat(Sink.head)(Keep.right)
我就知道(答案会在最上面)!谢谢我就知道(答案会在最上面)!谢谢