Scala型のシステムに問題があります。
class A[T](var value: T)
class B[T](val a: A[T], var newValue: T)
val list = new MutableList[B[_]]()
val a: A[Int] = new A(10)
val b: B[Int] = new B(a, 11)
list += b
val someB = list.head
someB.a.value = someB.newValue
、コンパイル後、私はエラーを参照してください。
Error:(12, 24) type mismatch;
found : A$A36.this.someB.newValue.type (with underlying type _$1)
required: _$1
someB.a.value = someB.newValue
^
両方someB.a.value
とsomeB.newValue
は同じ型を持っていますが、Scalaのコンパイラは、実際にはそうは思いません。どのようにこのエラーを修正することができますか?
'list.head'の型は' B [_] 'です。つまり、内部型は保持されません:' case class C [T](v:T); [C [_]](C(1)、C(123)) 'リストを表示する[C [_]] =コンパイルすると、整数を文字列に割り当てることができます。 –