如何将流 [IO, 列表 [A]] 转换为流 [IO, A]



我想解析一个输出A集合的 json 文件。Output的签名是IO[List[A]]

如何将此值转换为StreamStream[IO, A]?我可以转换为Stream[IO, List[A]]但这不是我想要的

fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x)) 谢谢

你也可以

使用 Stream.emits ,它接受一个Seq,所以fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_))

这比使用 varargs 和 apply 更有效,因为它避免了序列结构的包装和解包 - 这在专门的基元集合的情况下可以节省很多。

编辑:从最近的fs2版本(我写这篇文章时为3.9.x(开始,现在有一种方便的方法

def input: IO[List[Foo]] = ???
fs2.Stream.evalSeq(input) // Stream[IO, Foo]

尝试

fs2.Stream.eval(output).flatMap(x => fs2.Stream.apply(x: _*))

":_*"(冒号下划线星号(在 Scala 中做什么?

相关内容

  • 没有找到相关文章

最新更新