根据this,可以禁止任何未使用参数的警告。
但是,我认为抑制所有情况实际上可以隐藏错误,因此我想采用更细粒度的方法来抑制这些错误。
有一个确定的用例,在大多数情况下,此警告是没有意义的,我将通过一个示例进行解释。
例如以下假设的代理代码段:
trait HeadersGenerator {
def generateHeaders(request: Request): Seq[(String, String)]
}
class HeaderMutator extends HeadersGenerator {
override def generateHeaders(request: Request): Seq[(String, String)] = {
val oldValue = request.getHeader("SomeHeader")
Seq("SomeHeader" -> s"$oldValue - new")
}
}
class ConstantHeaderGenerator extends HeadersGenerator {
// here the 'request' parameter is not in use, and needed to be suppressed -
// it is not interesting that we do not use it here, since we
// don't have anything to do with that because it is inherited
override def generateHeaders(request: Request): Seq[(String, String)] = {
Seq("GeneratedHeader" -> "something")
}
// here the 'unused' parameter is interesting, and I would like to see a warning
private def shouldWarn(unused: String) {
// the parameter is not un use here
}
}
// somewhere in code
val headers = Seq(
new HeadersMutator,
new ConstantHeaderGenerator
).flatMap(_.generateHeaders(request))
答案 0 :(得分:1)
我认为,如果您使用_
而不是参数名称,那么在您的情况下,警告将消失。如果不使用参数,则不必命名。
答案 1 :(得分:0)
一个人总是可以以什么都不做的方式使用自己的参数。例如:
object CombinatoryLogic {
def unused[T](arg: T): Unit = arg match { case _ => () }
// Church encoding of true
def k[A, B](consequent: A, alternative: B): A = {
unused(alternative)
consequent
}
}
从我的角度来看,这是中等程度的不适。在收益方面,它始终可用。