0
Scalaの分散について質問があります。valの差異が無効です - エラー:反変種Uが共変位置で発生します
以下のコードはコンパイルに合格する有効なコードです。
// <Code A>
// VALID (COMPILE PASS!)
class A[+T, -U](t: T, u: U)
は、しかし、以下のコードは、val
を使用してコンパイル通過しない、有効ではありません。
// <Code B>
// INVALID (COMPILE ERROR)
class A[+T, -U](val t: T, val u: U)
エラーメッセージは次のとおりです。
error: contravariant type U occurs in covariant position in type => U of value u
class A[+T, -U](val t: T, val u: U)
^
<Code A>
が有効であると<Code B>
が有効でない私はなぜだろうか。誰か私に理由を教えてもらえますか?
ありがとうございました! – redstone