trait A {
type T
def test(t: T): Unit
}
case class B[S <: A](a: S, t : S#T) {
def test() = a.test(t) // Error: type mismatch;
// found : B.this.t.type (with underlying type S#T)
// required: B.this.a.T
}
私は上記のコンパイルが間違っていますか?私のコードは修正できますか?scalaがこのタイプのラムダを基になる型と統一しないのはなぜですか?
しかし、 'B [A2](新しいA3()、") 'はコンパイルされません...それは私のコードでどういう意味ですか? そうしないと、あなたのソリューションはまさに私が必要としていたものです。 – JbGi
ハ、巧妙なトリック!私は、洗練された右手の視界にタイプパラメータを使用できるかどうかはわかりませんでした。 – Haspemulator
@JbGiはい、私は実際にコンパイルする例でこれを実証する方法をたくさん考えましたが、ここではscalaコンパイラは非常に制限的です。これは、元のソースをコンパイルすることができる仮想のscalaのようなコンパイラの想像上の例であるようにしておきましょう。 – Odomontois