В приведенном ниже примере минимального класса типов scala 2.12.6 / sbt 1.2.1 жалуется could not find implicit value for parameter tc: tryout.Tryout.TypeClassTrait[Int]
. Если я раскомментирую строку println
, она скомпилируется. Я ожидал, что это сработает без println, потому что я импортирую все из объекта-компаньона.
Это ошибка или особенность? (Кстати: установка скалярного параметра -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)
}