我的 Tagless Final 中 Cats FlatMap 的问题 class

Problem with Cats FlatMap in my Tagless Final class

我有以下 class:

class MyBot[F[_] : FlatMap]

在这个class中我有一个函数:

private def handleCallback(): F[Boolean]

据我所知,这应该可行:

handleCallback().flatMap(..)

但它抛出:cannot resolve symbol flatMap

我错过了什么?

你需要召唤一个 FlatMap[F] 的实例并使用它的方法来 flatMap:

class MyBot[F[_]](implicit F: FlatMap[F]) {

  def handleCallback: F[Boolean] = ...

  def flatMapCallback: F[Boolean] = F.flatMap(handleCallback) { bool => 
    ...
  }

}

来自 eed3si9n 的精彩博客中有更多详细信息:http://eed3si9n.com/herding-cats/

Mon Calamari 的解决方案没有解决我的问题,但是在查看建议的博客 FlatMap 时,我发现:

import cats.implicits._ 我错过了 - 并解决了我的问题 - 一切都保持不变。