0
此代碼:斯卡拉類型約束令人困惑的錯誤
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
中的類型約束條件爲K
必須是Option[Int]
的子類型,即None
即使當我嘗試在Base
中嘗試val a: K = Some(0)
時,也會產生相同的錯誤。
我很困惑這種行爲,不知道爲什麼會發生這種情況,也許你可以幫助我?