找到了scala.Unit,需要单位

pr1*_*001 2 types scala

我有一个简单的容器特征,如下所示:

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)

为什么是这样?我可以修复此编译器错误吗?

sen*_*nia 5

有正确答案的问题几乎相同.

您可以使用特征类型参数,而不是方法类型参数:

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)