我想解析一个输出A
集合的 json 文件。Output
的签名是IO[List[A]]
如何将此值转换为Stream
:Stream[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 中做什么?