この例は単純化されています。
私はこのようなクラスのセットを持っています:
case class KeyMapping[KeyType](k:KeyType)
class WrappedMapping[KeyType](m:T forSome {type T <: KeyMapping[KeyType]}) {
val k:KeyType = ???
}
次のコードでは、型が正しく推論されます。
val w = new WrappedMapping(KeyMapping("key"))
//The statement below gives the correct error
//type mismatch;
// found : w.k.type (with underlying type String) required: Nothing
//val test1:Nothing = w.k
次の型を正しく推測する方法がわかりません。
class Mappings[KeyType, L <: HList](mappings:L) {
val k:KeyType = ???
}
val m = new Mappings(KeyMapping("key1") :: KeyMapping("key2") :: HNil)
// should not compile, k should be of type String
val test2:Nothing = m.k
KeyType
の内容に基づいて を推測できる方法はありHList
ますか?