scala 如何将Stream[IO,List[A]]转换为Stream[IO,A]

qco9c6ql  于 2023-10-18  发布在  Scala
关注(0)|答案(2)|浏览(104)

我想解析一个输出A集合的json文件。Output的签名是IO[List[A]]
如何将此值转换为StreamStream[IO, A]?我可以转换为Stream[IO, List[A]],但它不是我想要的
fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x))谢谢

rsl1atfo

rsl1atfo1#

您也可以使用Stream.emits,它接受Seq,因此fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_))
这比在apply中使用varargs更有效,因为它避免了对序列结构进行 Package 和展开--在专门化的基元集合的情况下,这可以保存很多东西。
编辑:在最近的fs 2版本(我写这篇文章时是3.9.x)中,现在有一个方便的方法

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

vdgimpew2#

尝试

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

What does :_* (colon underscore star) do in Scala?

相关问题