2.10にアップグレードしている存在型を使用するScalaコードがいくつかありますが、「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..
}
}
この警告が表示されます:
[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)
この警告を生成しない(またはインポートを必要としない)コードを書き直す方法はありますか、それともそれを表現する最も慣用的な方法ですか?コード内のどこでも、Classの型パラメーターについて質問することはありません。