这段代码:
trait Base[+K <: Option[Int]] {
val a: K = None
}
class GuaranteedA extends Base[Some[Int]] {
override val a = Some(1)
}
产生错误:
<console>:8: error: type mismatch;
found : None.type
required: K
val a: K = None
但为什么?K
say中的类型约束K
必须是它的子类型Option[Int]
,None
即使我尝试val a: K = Some(0)
in Base
,也会产生相同的错误。
我对这种行为感到非常困惑,不知道为什么会发生这种情况,也许你可以帮助我?