抑制特定范围内未使用的警告
Suppress unused warnings in a particular scope
在 Scala (2.12) 中编写特征时,我添加了一个可以被某些子类覆盖的默认实现。由于在我的整个实施过程中几乎所有地方都需要 state
它是 隐式 这样我就不必在每次需要时都传递它。
考虑以下代码片段,编译器确实抱怨 SomeTrait.defaultMethod
的隐式参数 state
未被使用并抛出错误。是否有任何选项可以抑制该特定范围内的此类错误?我绝对想全局保留未使用的错误。
trait SomeTrait {
def defaultMethod(implicit state: State) : Unit = {
// default implemenation does nothing
}
}
class Subclass extends SomeTrait{
override def deafultMethod(implicit state: State) : Unit = {
state.addInformation()
}
}
此外,我想保持状态隐式。理论上,可以向该方法添加虚假用法,但这不是一个干净的解决方案。
Scala 2.13引入@unused
注解
This annotation is useful for suppressing warnings under -Xlint
.
(#7623)
这里有几个examples
// scalac: -Xfatal-warnings -Ywarn-unused
import annotation.unused
class X {
def f(@unused x: Int) = 42 // no warn
def control(x: Int) = 42 // warn to verify control
private class C // warn
@unused private class D // no warn
private val Some(y) = Option(42) // warn
@unused private val Some(z) = Option(42) // no warn
@unused("not updated") private var i = 42 // no warn
def g = i
@unused("not read") private var j = 42 // no warn
def update() = j = 17
}
在 Scala (2.12) 中编写特征时,我添加了一个可以被某些子类覆盖的默认实现。由于在我的整个实施过程中几乎所有地方都需要 state
它是 隐式 这样我就不必在每次需要时都传递它。
考虑以下代码片段,编译器确实抱怨 SomeTrait.defaultMethod
的隐式参数 state
未被使用并抛出错误。是否有任何选项可以抑制该特定范围内的此类错误?我绝对想全局保留未使用的错误。
trait SomeTrait {
def defaultMethod(implicit state: State) : Unit = {
// default implemenation does nothing
}
}
class Subclass extends SomeTrait{
override def deafultMethod(implicit state: State) : Unit = {
state.addInformation()
}
}
此外,我想保持状态隐式。理论上,可以向该方法添加虚假用法,但这不是一个干净的解决方案。
Scala 2.13引入@unused
注解
This annotation is useful for suppressing warnings under
-Xlint
. (#7623)
这里有几个examples
// scalac: -Xfatal-warnings -Ywarn-unused
import annotation.unused
class X {
def f(@unused x: Int) = 42 // no warn
def control(x: Int) = 42 // warn to verify control
private class C // warn
@unused private class D // no warn
private val Some(y) = Option(42) // warn
@unused private val Some(z) = Option(42) // no warn
@unused("not updated") private var i = 42 // no warn
def g = i
@unused("not read") private var j = 42 // no warn
def update() = j = 17
}