我想解析一个输出A集合的json文件。Output的签名是IO[List[A]]如何将此值转换为Stream:Stream[IO, A]?我可以转换为Stream[IO, List[A]],但它不是我想要的fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x))谢谢
A
Output
IO[List[A]]
Stream
Stream[IO, A]
Stream[IO, List[A]]
fs2.Stream.eval(input).flatMap(x => fs2.Stream.apply(x))
rsl1atfo1#
您也可以使用Stream.emits,它接受Seq,因此fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_))。这比在apply中使用varargs更有效,因为它避免了对序列结构进行 Package 和展开--在专门化的基元集合的情况下,这可以保存很多东西。编辑:在最近的fs 2版本(我写这篇文章时是3.9.x)中,现在有一个方便的方法
Stream.emits
Seq
fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_))
def input: IO[List[Foo]] = ??? fs2.Stream.evalSeq(input) // Stream[IO, Foo]
vdgimpew2#
尝试
fs2.Stream.eval(output).flatMap(x => fs2.Stream.apply(x: _*))
What does :_* (colon underscore star) do in Scala?
:_*
2条答案
按热度按时间rsl1atfo1#
您也可以使用
Stream.emits
,它接受Seq
,因此fs2.Stream.eval(output).flatMap(fs2.Stream.emits(_))
。这比在apply中使用varargs更有效,因为它避免了对序列结构进行 Package 和展开--在专门化的基元集合的情况下,这可以保存很多东西。
编辑:在最近的fs 2版本(我写这篇文章时是3.9.x)中,现在有一个方便的方法
vdgimpew2#
尝试
What does
:_*
(colon underscore star) do in Scala?