19得票1回答
flatMap、flatTap、evalMap和evalTap的区别

在Scala的fs2函数式流库中: 我试图理解flatMap、flatTap、evalMap和evalTap之间的区别。它们似乎都执行相同的操作,即对流值进行转换。 它们之间有什么区别,什么时候应该使用每个操作?

13得票1回答
如何在Scala Cats / fs2中理解堆栈安全性?

这是来自fs2文档的一段代码。函数go是递归的。问题是我们如何知道它是否堆栈安全,以及如何推断任何函数是否堆栈安全? import fs2._ // import fs2._ def tk[F[_],O](n: Long): Pipe[F,O,O] = { def go(s: Stre...

9得票2回答
如何将Scala FS2流转换为字符串?

我想知道如何将Scala fs2 Stream转换为字符串,以下是fs2 GitHub自述文件中的示例代码: def converter[F[_]](implicit F: Sync[F]): F[Unit] = { val path = "/Users/lorancechen/vers...

9得票1回答
如何在fs2中进行“流拆分”?

我想做类似于这样的事情: def splitStream[F, A](stream: fs2.Stream[F, A], split: A => B): (Stream[F, A], Stream[F, B)) = (stream, stream.map(split) 但这样...

8得票2回答
在超时后停止fs2-stream。

我想要使用类似于take(n: Int)的功能,但考虑到时间因素,所以希望能够使用consume(period: Duration)。这样,当超时发生时,流将终止。我知道可以将流编译成类似IO[List[T]]的形式并取消它,但那么我会失去结果。实际上,我想将无限流转换为有限流,并保留结果。 ...

8得票3回答
将元素外部推送到fs2中的响应式流

我有一个外部(即我无法更改)的Java API,它看起来像这样: public interface Sender { void send(Event e); } 我需要实现一个“发送者”,它可以接受每个事件,将其转换为JSON对象,收集一些数量的事件放入单个捆绑包中,并通过HTT...

7得票1回答
使用fs2.Stream对事件进行分组

我有如下的事件流: sealed trait Event val eventStream: fs2.Stream[IO, Event] = //... 我希望将在同一分钟内收到的事件分组(即每分钟从0秒到59秒)。 使用fs2听起来非常简单。 val groupedEventsStr...