在下面的最小类型类示例中,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)
}