【问题标题】:How to "contramap" akka-streams Sink如何“映射” akka-streams Sink
【发布时间】:2016-05-10 03:59:55
【问题描述】:

有一个 akka-streams Sink:

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

还有一个从Bar 到Foo 的函数:

val f: Bar => Foo = ???

我想 contramap(map 的反面)sink 和 f 以获得 Sink[Bar, Any] 类型的接收器,但找不到这样的库中的一个简单方法。如何实现我所需要的?

【问题讨论】:

    标签: scala akka-stream


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      结果很简单。

      创建一个Flow 接受Bars:

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

      并将其与f 流水线结果映射到原始sink:

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

      【讨论】:

        猜你喜欢
        • 2021-01-04
        • 2016-07-22
        • 2016-01-21
        • 2020-06-27
        • 1970-01-01
        • 2018-02-18
        • 2020-06-27
        • 2019-04-13
        • 1970-01-01
        相关资源
        最近更新 更多