抑制“丢弃非单位值”警告

问题描述 投票:0回答:3

我已将 scalac 命令行参数

-Ywarn-value-discard
添加到我的构建中,因为这会捕获我刚刚在代码中发现的一个微妙错误。但是,我现在收到一些关于“丢弃的非单位值”的警告,这些警告是关于故意丢弃的,而不是错误。如何抑制这些警告?

scala compiler-warnings
3个回答
68
投票

您可以通过显式返回单位(即

()
)来抑制这些警告。 例如转动这个:

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

进入:

def method1() = {
   println("Hello")
   "Bye"
}
def method2(): Unit = {
  method1()
  () // Explicitly return unit
}

27
投票

根据这个答案,您还可以使用语法

val _
,即

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

但是对于这个还是 @Régis 的答案是否是首选风格存在一些争议。


9
投票

现在您可以通过

Scala 2.13
中的 Unit 的类型归属来抑制值丢弃警告。

这是一个例子:

def suppressValueDiscard(): Unit =
  "": Unit
© www.soinside.com 2019 - 2024. All rights reserved.