Scala 在使用 monix TaskApp 时为cats.effect.Timer 发散隐式扩展

Posted

技术标签:

【中文标题】Scala 在使用 monix TaskApp 时为cats.effect.Timer 发散隐式扩展【英文标题】:Scala diverging implicit expansion for cats.effect.Timer when using monix TaskApp 【发布时间】:2021-09-23 06:54:04 【问题描述】:

CE 2.x。莫尼克斯 3.4。第1行编译,第2行给出编译错误:

cats.kernel.Order[A] 类型的发散隐式扩展 从对象 Eq 中的方法 catsKernelOrderForFunction0 开始 Stream.sleep_(5.seconds).compile.drain.as(ExitCode.Success) // 2

import cats.effect.ExitCode, Timer
import fs2.Stream
import monix.eval.Task, TaskApp
import scala.concurrent.duration.DurationInt


object ImplicitsFreeze extends TaskApp 

  def run(args: List[String]): Task[ExitCode] = 
    Stream.sleep_(5.seconds)(implicitly[Timer[Task]]).compile.drain.as(ExitCode.Success)  // 1
//    Stream.sleep_(5.seconds).compile.drain.as(ExitCode.Success) // 2
  


【问题讨论】:

【参考方案1】:

添加效果类型的注解解决了问题

Stream.sleep_[Task](5.seconds).compile.drain.as(ExitCode.Success) // 2

【讨论】:

以上是关于Scala 在使用 monix TaskApp 时为cats.effect.Timer 发散隐式扩展的主要内容,如果未能解决你的问题,请参考以下文章

使用 scala sbt 构建一个独立的 jar 以合并到一个 android 项目中

“未找到编译器镜像中的 scala.runtime”,但在使用 -Xbootclasspath/p:scala-library.jar 启动时工作

使用 circe 时如何在 Scala 中表示动态 JSON 键

使用 sbt 构建 scala 项目时,scala 的版本有啥关系?

在 Spark Scala 中使用自定义数据框类时任务不可序列化

Scala 期货 - 如何在完成时结束?