奇怪的Scala编译器警告

Vin*_*gio 1 scala playframework

我在Scala Play Framework中有以下代码:

  case class Step(name: String, f: Unit) {
    def run = {() => f}
  }
Run Code Online (Sandbox Code Playgroud)

编译器给了我一个奇怪的警告

comparing values of type Unit and Unit using '==' will always yield true
Run Code Online (Sandbox Code Playgroud)

Lui*_*hys 5

这是因为案例类==为您定义了一个方法,它比较了案例类中的每个字段.所以Step("a", println("1")) == Step("a", println("2"))是真实的,即使想到Unit的功能是不一样的.