2015-12-14 70 views
4

具有阿卡流Sink如何 “contramap” 阿卡流水槽

val sink: Sink[Foo, Any] = ??? 

Bar一个功能Foo

val f: Bar => Foo = ??? 

我想contramap(与相反的地图sinkf得到类型的接收器,但在库中找不到这样一个简单的方法。如何实现我所需要的?

回答

2

原来相当简单。

创建Flow接受Bar S:

val flow: Flow[Bar, Bar, Unit] = Flow[Bar] 

f流水线结果原来sink图吧:

val sink2: Sink[Bar, Unit] = flow.map(f).to(sink) 
2

随着2.4.Xakka-streams版本,它是更简单:

val sink3: Sink[Bar, Future[Done]] = sink.contramap(f)