2016-12-16 5 views
0

良い方法以下の方法で実装することがある(すなわち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()) 
} 

は?

答えて

2

本質的には、一連のグラフをマテリアライズして、マテリアライズされた値のSourceを作成しています。 Materializerパラメータなしでこれを行う方法はありません。

それはあなたが

source.map(a => f(a).runWith(g(a))) 
として、よりコンパクトにあなたの方法を書くことができ、助け場合

関連する問題