根据文档,PartiallyOrdered[A]在 中是协变的A,而在Ordered[A]中是不变的(但曾经是协变的)A。
为什么曾经Ordered[A]是协变的A?这不是明显违反了替代原则吗?
为什么不能Ordered[A]逆变A?例如,这将允许Ordered[Traversible[Char]]将 a 键入为Ordered[StringBuilder]。我不明白这怎么会有问题。
我无法理解tryCompareToin的签名PartiallyOrdered。看起来参数可以是任何超类型的实例A。你不能通过调用传递任何对象tryCompareTo[Any](anything)吗?如果是这样,方法签名比什么更好tryCompareTo(that: Any)?
从逻辑上讲,有序集是部分有序集的子类,但 Scala 类似乎没有反映这种关系。这是因为不能Ordered[A]尽可能地协变吗?APartiallyOrdered[A]