我是一个新手,试图掌握 fs2 队列背后的直觉。我正在尝试做一个从Stream[IO, Int]. 但是文档对我来说是不够的,因为它直接深入到高级内容中。
这是我到目前为止所做的:
import cats.effect.{ ExitCode, IO, IOApp}
import fs2._
import fs2.concurrent.Queue
class QueueInt(q: Queue[IO, Int]) {
def startPushingtoQueue: Stream[IO, Unit] = {
Stream(1, 2, 3).covary[IO].through(q.enqueue)
q.dequeue.evalMap(n => IO.delay(println(s"Pulling element $n from Queue")))
}
}
object testingQueues extends IOApp {
override def run(args: List[String]): IO[ExitCode] = {
val stream = for {
q <- Queue.bounded(10)
b = new QueueInt(q)
_ <- b.startPushingtoQueue.drain
} yield ()
}
}
Run Code Online (Sandbox Code Playgroud)
问题 1:我No implicit argument of type Concurrent[F_], …
我有一个类型的值List[EitherT[IO, String, Int]],我想对其进行序列以便将其映射到EitherT[IO,String, List[Int]]
我阅读并找到了序列方法,但它给了我一个错误,说它需要 [G] 的隐式应用,如何解决这个问题
考虑到最佳实践,我试图在 Option 中获取值。例如,我有:
val listExample : List[Option[String]] = List(Some("A"), Some("B))
Run Code Online (Sandbox Code Playgroud)
我想访问A和B
一种方式,正在做listExample.head.get = "A",listExample.last.get = "B"
但这不是一个好习惯。怎么办:listExample.headOption.flatten.ToString
这安全吗?
scala ×3
types ×2
applicative ×1
fs2 ×1
list ×1
option ×1
queue ×1
scala-cats ×1
sequence ×1
stream ×1