找不到伴随对象中定义的参数的隐式值

时间:2018-08-28 12:04:25

标签: scala typeclass implicits companion-object

在下面的最小类型类示例中,scala 2.12.6 / sbt 1.2.1抱怨could not find implicit value for parameter tc: tryout.Tryout.TypeClassTrait[Int]。如果我取消注释println行,它将编译。我期望在没有println的情况下也能正常工作,因为我从同伴对象中导入了所有内容。

这是错误还是功能? (顺便说一句:设置scalac选项-Xlog-implicits并没有任何帮助。)

trait Tryout {
  import Tryout._
//  println(IntTypeClass) // uncomment this line to make compile work
  show(3)                 // compile fails here
}
object Tryout {
  trait TypeClassTrait[T] {
    def show(t: T): Unit
  }
  implicit object IntTypeClass extends TypeClassTrait[Int] {
    override def show(t: Int): Unit = println(t)
  }
  def show[T](t: T)(implicit tc: TypeClassTrait[T]): Unit = tc.show(t)
}

0 个答案:

没有答案