我有一个简单的容器特征,如下所示:
trait Handler {
def apply[In, Out](in: In): Out
}
Run Code Online (Sandbox Code Playgroud)
当我尝试实现它时:
new Handler {
def apply[Any, Unit](in: Any) = println(in)
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
[error] found : scala.Unit
[error] required: Unit(in method apply)
[error] def apply[Any, Unit](in: Any) = println(in)
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我可以修复此编译器错误吗?
有正确答案的问题几乎相同.
您可以使用特征类型参数,而不是方法类型参数:
trait Handler[Out] {
def apply[In](in: In): Out
}
new Handler[Unit] {
def apply[In](in: In) = println(in)
}
Run Code Online (Sandbox Code Playgroud)