我有一些使用存在类型的Scala代码,我正在升级到2.10,我注意到有关添加"import language.existentials"的警告,这让我觉得应该有更好的方法来编写它.我的代码归结为:
class A {
private var values = Set.empty[(Class[_], String)]
def add(klass: Class[_], id: String) {
val key = (klass, id)
if (!values(key)) {
values += key
// More logic below..
}
}
Run Code Online (Sandbox Code Playgroud)
我收到这个警告:
[warn] test.scala:4 inferred existential type (Class[_$2], String) forSome { type _$2 }, which cannot be expressed by wildcards, should be enabled
[warn] by making the implicit value language.existentials visible.
[warn] This can be achieved by adding the import clause 'import language.existentials'
[warn] or by setting the compiler option -language:existentials.
[warn] See the Scala docs for value scala.language.existentials for a discussion
[warn] why the feature should be explicitly enabled.
[warn] val key = (klass, id)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以重写我的代码而不是生成这个警告(或者需要导入),还是那种表达它的最惯用的方法呢?我从不在代码中的任何地方询问类的类型参数.
警告是关于存在类型的推论,这通常是不可取的.添加import语句,或将其显式化:
val key: (Class[_], String) = (klass, id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |