抑制特定范围内未使用的警告

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
}