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