マップ内のキーと値のタイプ間の依存関係をエンコードすると便利な場合があります。次のタイプを検討してください。
type MyPairs = Seq[(TypeTag[T], T) forSome {type T}]
ここで、シーケンス内の各ペアは同じ type を持つ必要がありT
ます。しかし、そのようなタイプは、マップのような使用法に関してはあまり便利ではありません。ただし、 2つの独立した型パラメーターがあり、それらを「グループ化」して単一の存在型を使用することはできないためMap[K, V]
、のような依存関係を表現できません。Map
ナイーブ バリアント
type MyMap = Map[TypeTag[T], T] forSome {type T}
単一のタイプを強制するだけT
です。すべてのMyMap
エントリに適用されますが、それぞれ個別に適用されるわけではありません。
私が思うもう一つの極端な例は、
type MyMap = Map[TypeTag[_], _]
しかし、もちろん、これは広すぎる定義であり、キーと値の型の任意の組み合わせが可能です。
だから私の質問は、Scala でそのような型をエンコードすることは可能ですか? はいの場合、どのように?