这意味着定义trait Option[T]与 相同trait Option[+T]。
很容易认为val humanOpt: Option[Human]can 指向一个Option[Student]实例,就像val humanOpt: Humancan 指向一个Student实例一样。
也许这看起来有些奇怪,但我为什么要考虑这个?
Java 变量默认为多态,与 c++ 相比,它应该使用virtual关键字。我认为在 Java 中简化 OO 很重要。
Scala 在许多与 Java 相比更频繁的用例中使用高阶类型,例如Option,Try或者自己定义 a Cache[T]。
此外,它仍然符合 Liskov Substitution 原则。
我只想知道为什么不将协变简化为默认行为?