Value withFilter 不是 Cats IO 的成员,用于理解



我写了这段代码,它编译得很好

for {
  list : List[Int] <- Future(List(1, 2, 3))
} yield list.size 
res7: Future[Int] = Future(Success(3))

但是如果我将此代码转换为

for {
  list : List[Int] <- IO(List(1, 2, 3))
} yield list.size

我收到编译时错误

value withFilter is not a member of cats.effect.IO[List[Int]]

如果我删除该类型,那么它可以很好地编译

for {
  list  <- IO(List(1, 2, 3)) // returns IO[List[Int]]
} yield list.size 
res8: IO[Int] = Map(Delay(<function0>), <function1>, 0)

为什么我无法使用 IO 指定类型?

我启用了部分统一,所以不可能那么:)

你的理解被脱糖成形式,它使用函数withFilterIO没有这种方法,编译失败。

幸运的是,有一个编译器插件更好的monadic-for,它解决了这个问题。

只需在您的build.sbt中添加addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.0"),您应该没问题。

相关内容

  • 没有找到相关文章

最新更新