I have added the scalac command line argument -Ywarn-value-discard
to my build because this would have caught a subtle bug that I just found in my code. However, I now get some warnings for "discarded non-Unit value" that are about intentional discards, not bugs. How do I suppress those warnings?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You suppress these warning by explictly returning unit (that is ()
).
By example turn this:
def method1() = {
println("Hello")
"Bye"
}
def method2() {
method1() // Returns "Bye", which is implicitly discarded
}
into:
def method1() = {
println("Hello")
"Bye"
}
def method2() {
method1()
() // Explicitly return unit
}
回答2:
According to this answer, you can also use the syntax val _
, i.e.
def method2(): Unit = {
val _ = method1()
}
But there is some dispute over whether this or the answer by @Régis is the preferred style.
回答3:
Now you can suppress value-discard warning via type ascription to Unit
in Scala 2.13.
This is an example:
def suppressValueDiscard(): Unit =
"": Unit