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