如何在akka-streams中使用"contramap"来处理Sink

4

拥有一个 akka-streamsSink:

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

以及从BarFoo的函数:

val f: Bar => Foo = ???

我想使用f来反向映射(contramap) sink,得到一个类型为Sink [Bar,Any]的sink,但是在库中找不到这样简单的方法。如何实现我所需的功能?

2个回答

3

使用akka-streams版本2.4.X,操作更加简单:

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

2

原来这很简单。

创建一个接受BarFlow

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

并将其与f映射,通过管道将结果传送回原始sink

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接