收集物化物化值作为源

时间:2016-12-16 20:27:15

标签: scala akka-stream

是否有更好的方法(即通过删除Materializer约束)来实现以下方法:

import akka.NotUsed
import akka.stream.Materializer
import akka.stream.scaladsl.{Keep, Sink, Source}

def assemble[A, B, C](source: Source[A, NotUsed])
                     (f: A => Source[B, NotUsed], g: A => Sink[B, C])
                     (implicit m: Materializer): Source[C, NotUsed] = {

  source.map(a => f(a).toMat(g(a))(Keep.right).run())
}

1 个答案:

答案 0 :(得分:2)

基本上,你是在实现了一堆图表并创建了一个Source的物化价值。 如果没有Materializer参数,我就没有办法做到这一点。

如果它有帮助,你可以用更紧凑的方式编写你的方法

source.map(a => f(a).runWith(g(a)))