一个简单的问题。::
immutable 类的方法List
定义为:
密封抽象类 List[+A] ...
def ::[B >: A](x: B): 列表[B]
假设我有:
class Fruit
class Mango extends Fruit
scala> val d:List[Fruit] = List.empty[Fruit]
d: List[Fruit] = List()
scala> new Mango :: d
res5: List[Fruit] = List(Mango@272d6774)
现在我在这里很困惑。根据::
声明,参数类型应该是逆变的。即在这种情况下,任何类>: Fruit
(我理解为什么会这样)。但我不明白的是,Mango <: Fruit
为什么编译器不抛出错误?