键入别名和隐式值解析



我认为这很容易,但我遇到了找不到Monix任务的FlatMap或Functor的问题。我使用"类型别名"来简化长类型签名,但在for compression中,我收到了一个"找不到隐式值"错误。如果我删除了类型别名,那么它就起作用了,因为Monix支持cats。有人会建议编译器如何告诉TaskEather是Monix Task,并且可以使用Monix Task提供的cats实例吗。类型别名:

type TaskEither[A] = Task[Either[Erratum, A]]

发生错误的方法:注意:getBotForUser和processBotDetails都封装在类似于findCreateBot方法的Kleisli中

def findCreateBot(msg: Routing): Kleisli[TaskEither, DBRepo[MySQLProfile, ServiceConfig[Config]], ActorRef] ={
import Task._
for {
bot <- XmppRepository[MySQLProfile, ServiceConfig[Config]].getBotForUser(msg.routingHeader.to.userID)
botRef <- processBotDetails(bot)
} yield botRef
}

错误消息:

XMPPGateway.scala:61:14: could not find implicit value for parameter F: cats.Functor[MyTypes.TaskEither]
[error]       botRef <- processBotDetails(bot)
[error]  
^

错误消息:

XMPPGateway.scala:60:11: could not find implicit value for parameter F: cats.FlatMap[MyTypes.TaskEither]
[error]       bot <- XmppRepository[MySQLProfile, ServiceConfig[Config]].getBotForUser(msg.routingHeader.to.userID)
[error]  
^

如果您使用cats,则必须导入cats.data_导入cats.implicits._

相关内容

  • 没有找到相关文章

最新更新