48

scalacコマンドライン引数-Ywarn-value-discardをビルドに追加しました。これは、コードで見つけた微妙なバグをキャッチするためです。ただし、バグではなく意図的な破棄に関する「破棄された非ユニット値」に関する警告が表示されるようになりました。これらの警告を抑制するにはどうすればよいですか?

4

3 に答える 3

67

ユニット(つまり())を明示的に返すことにより、これらの警告を抑制します。例としてこれを回します:

def method1() = {
   println("Hello")
   "Bye"
}
def method2() {
  method1() // Returns "Bye", which is implicitly discarded
}

の中へ:

def method1() = {
   println("Hello")
   "Bye"
}
def method2() {
  method1()
  () // Explicitly return unit
}
于 2012-11-16T11:09:05.803 に答える
21

この回答によると、構文を使用することもできますval _

def method2(): Unit = {
  val _ = method1()
}

しかし、これまたは@Régisによる回答が好ましいスタイルであるかどうかについては、いくつかの論争があります。

于 2015-06-10T06:01:55.733 に答える
5

Unitこれで、Scala2.13でタイプascriptiontoを介して値破棄警告を抑制できます。

これは例です:

def suppressValueDiscard(): Unit =
  "": Unit
于 2019-08-09T14:56:54.360 に答える