2015-12-14 109 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)