You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Akka Stream SubFlow(路径依赖泛型)隐式类编译问题求助

解决方案

正确隐式类代码

import akka.stream.scaladsl.SubFlow
import akka.stream.FlowOps

implicit class SideEffectfulSubFlowOps[Out, Mat, F[+_], C](val enrichedSubFlow: SubFlow[Out, Mat, F, C]) extends AnyVal {

    /** 执行副作用且不修改流元素。
     *  与[[SubFlow.alsoTo]]和[[SubFlow.wireTap]]不同,该操作在背压、并发层面的语义与[[SubFlow.map]]完全一致 */
    def withSideEffect(f: Out => Unit): enrichedSubFlow.Repr[Out] = {
      enrichedSubFlow.map { o =>
        f(o)
        o
      }
    }
}

原代码报错原因

  1. 额外引入了不必要的FOps类型参数,SubFlow的第三个泛型参数本身就是对应FlowOps的Repr高阶类型,不需要通过FOps#Repr间接引用
  2. Scala编译器无法从实际传入的SubFlow实例反向推导出FOps的具体类型,导致类型匹配失败

效果验证

调整后你期望的链式调用写法可以直接正常编译:

val got = Source(List("1", "2", "3"))
  .groupBy(1, f)
  .withSideEffect((elem: String) => recordedItems.add(elem))
  .mergeSubstreams
  .to(Sink.seq)

内容的提问来源于stack exchange,提问作者leozilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:02