1

ScalaPlayFrameworkに次のコードがあります。

  case class Step(name: String, f: Unit) {
    def run = {() => f}
  }

コンパイラは私に奇妙な警告を出します

comparing values of type Unit and Unit using '==' will always yield true
4

2 に答える 2

5

==これは、ケース クラスがケース クラスの各フィールドを比較するメソッドを定義するためです。機能が同じではないStep("a", println("1")) == Step("a", println("2"))としてもそうです。Unit

于 2012-08-23T21:32:32.447 に答える
2

あなたが本当に必要としている可能性は非常に低いですf: Unit。結局のところ、Unit値は 1 つだけです: ().

私はあなたがこれを行うことを考えているかもしれないと思います:

Step("Debugging", println("here"))

実際、これはすべてのタイプを尊重しますが、 を呼び出すとき、またはの戻り値を適用するときに「ここ」を出力しません。代わりに、 を初期化するときに「here」と出力し、戻り値 を に渡します。を呼び出した時点では、何もしません。runrunStep()frun

おそらく、代わりにこれが必要でした:

case class Step(name: String, f: => Unit) {
  def run = {() => f}
}

あるいは:

case class Step(name: String, f: => Unit) {
  def run = f
}
于 2012-08-23T22:48:30.513 に答える