Ich verstehe, was ist partial order aus mathematischer Sicht, aber nicht sehen, wo und wie PartialOrdering Typ Klasse von Scala-Bibliothek verwendet werden kann. Ich habe die gesamte Standardbibliothek durchsucht und es gibt nur eine Verwendung: Sie wurde um die Bestellung erweitert. Die gleiche Geschichte für seine primäre Methode tryCompare
, scheint es nirgends verwendet wird.Zweck der PartialOrdering in Scala-Bibliothek
Also, welche Vorteile ich haben kann, wenn statt
case class Foo(x: Int, y: String)
val order = Ordering.by { foo => (foo.x, foo.y) }
ich eine domänen richtige Instanz implementieren:
object PartialFoo extends PartialOrdering[Foo] {
def tryCompare(a: Foo, b: Foo): Option[Foo] = {
if (a.x != b.x) None // Doesn't make sense to compare foos with different xs
else ???
}
}
UPD: Es scheint auch, wie Merkmal Bestell defined mit Rück Geben Sie Some[Int]
(nicht Option[Int]
) und ich kann nicht sogar Override verwenden. Ist es beabsichtigt?
Die Standardbibliothek ist voller Geheimnisse wie dieses, und ich bin Ich bin mir nicht sicher, ob es eine bessere Antwort gibt als "jemand, der erfolgreich darum gebeten hat, dies irgendwann zu tun". –
Auch der einzige Ort, an den ich mich erinnern kann, dass er jemals in einer Scala-Codebasis verwendet wurde, ist Algebird. –