ドキュメントによると、PartiallyOrdered[A]
は で共変ですがA
、Ordered[A]
は で不変です (ただし、以前は共変でした) A
。
Ordered[A]
で共変だったのはなぜA
ですか? これは明らかな代替原則の違反ではありませんか?
Ordered[A]
で反変になれないのはなぜA
ですか? これにより、たとえばOrdered[Traversible[Char]]
an を an として入力できます。Ordered[StringBuilder]
これがどのように問題になるかわかりません。
tryCompareTo
inの署名を理解するのに苦労していPartiallyOrdered
ます。引数は の任意のスーパータイプのインスタンスにできるようですA
。を呼び出してオブジェクトを渡すことができませんでしたtryCompareTo[Any](anything)
か? もしそうなら、メソッドの署名はどのように優れていtryCompareTo(that: Any)
ますか?
論理的には、順序集合は部分順序集合のサブクラスですが、Scala クラスはこの関係を反映していないようです。これは、共変できないためですOrdered[A]
か?A
PartiallyOrdered[A]