小编zac*_*ckg的帖子

使用-Ywarn-unused时,从Scala中的分析中排除类型证据参数

T <:< U-Ywarn-unused传递给编译器时,在Scala中编译包含类型证据参数的程序(例如)可能会引起警告。特别是在类型证据参数用于验证使用幻像类型编码的约束的情况下,很可能会发生此警告。

例如,在此处编译文件:https : //github.com/hseeberger/demo-phantom-types/blob/master/src/main/scala/de/heikoseeberger/demophantomtypes/Hacker.scala返回以下内容:

# scalac -Ywarn-unused Hacker.scala Hacker.scala:42: warning: parameter value ev in method hackOn is never used def hackOn(implicit ev: IsCaffeinated[S]): Hacker[State.Decaffeinated] = { ^ Hacker.scala:47: warning: parameter value ev in method drinkCoffee is never used def drinkCoffee(implicit ev: IsDecaffeinated[S]): Hacker[State.Caffeinated] = { ^ two warnings found

对我来说很明显,该参数ev实际上不是在运行时必需的,但在编译时该参数很有用。有什么方法可以指示编译器忽略这种情况,同时在其他情况下仍对未使用的函数参数提出警告?

例如,我认为指示编译器忽略类的隐式参数<:<=:=将解决此问题,但是我不确定如何实现。

scala compiler-warnings implicits phantom-types unused-variables

2
推荐指数
1
解决办法
341
查看次数