我有以下定义:
sealed trait MyTrait
case object One extends MyTrait
case object Two extends MyTrait
object Test extends (MyTrait => MyTraitReturnVal) {
def apply(myTrait: MyTrait) = { ... }
def myMethod(myTrait: MyTrait) = {
...
}
}
当我调用Test(One)时,它抱怨它期待一个接口而不是一个具体的类型。关于如何解决这个问题的任何建议?
所以打电话:
Test(One)
抱怨它期待MyTrait,实际参数是One.type!
答案 0 :(得分:1)
您正在从Function1类继承Test对象,因此您需要实现' apply'方法而不是myMethod'。此代码编译并运行:
sealed trait MyTrait
case object One extends MyTrait
case object Two extends MyTrait
case class MyTraitReturnVal(my: MyTrait)
object Test extends (MyTrait => MyTraitReturnVal) {
def apply(myTrait: MyTrait) =
new MyTraitReturnVal(myTrait)
}
println(Test(One))
println(Test(Two))