2017-04-13 65 views
7

我想用OptionT来结合方法返回Future[Option[T]]在for-comprehension。缺少猫函数[未来]实例

import cats.data._ 
import cats.implicits._ 
import cats.instances.future._ 

for { 
    data <- OptionT(repo.getData(id)) 
    ... 
} 

编译器错误,我越来越:

could not find implicit value for parameter F cats.Functor[scala.concurrent.Future] 

recent example表明,这是(是?)可能的。

所以不要在此pull request for adding OptionT

cats Functor docs

的文档缺少什么我在这里?

谢谢

回答

10

通过导入cats.implicits._你实际上已经导入cats.syntax.AllSyntaxcats.instances.AllInstances

尝试使用只是那些进口:

import cats.data._ 
import cats.implicits._ 

或(根据您的需要):

import cats.data._ 
import cats.instances.future._ 

您可能还需要:

import scala.concurrent.Future 
import scala.concurrent.ExecutionContext.Implicits.global 

注:当然,你必须提供隐含在生产环境中的实际ExecutionContext

+3

删除导入cats.instances.future._并添加ExecutionContext固定了这个。谢谢你,费德里科。 – kostja

+0

我只使用'import cats.instances.future.catsStdInstancesForFuture',并删除所有其他相关的猫导入,也可以修复此错误 – Freewind