【发布时间】:2018-09-27 22:59:52
【问题描述】:
我正在尝试实现一个使用案例对象而不是类的类型类。它有点工作。 但是,当我将 case 对象本身传递给它可以工作的函数时,当我尝试传递具有基本特征类型的对象时,它不会编译。
object Test {
sealed trait MyType
case object Type1 extends MyType
case object Type2 extends MyType
trait Builder[A] {
def build: String
}
object Builder {
implicit val type1Builder: Builder[Type1.type] = new Builder[Type1.type] {
def build: String = s"building1"
}
implicit val type2Builder: Builder[Type2.type] = new Builder[Type2.type] {
def build: String = s"building2"
}
def build[A](a: A)(implicit builder: Builder[A]) = builder.build
}
import Builder._
// Compiles
def test[T <: MyType](t:Type2.type): Unit = {
println(Builder.build(t))
}
// Doesn't compile - 'could not find implicit value for parameter builder '
def test2[T <: MyType](t:MyType): Unit = {
println(Builder.build(t))
}
}
【问题讨论】:
-
如果您花点时间格式化您的代码,您可能会得到更好的答案